【问题标题】:Postgresql Trigger examplePostgresql 触发器示例
【发布时间】:2016-11-03 10:07:11
【问题描述】:

当行更新触发器将更改该行时,我创建了一个触发器。当我更新列时出现错误。我该如何解决?

错误:超出堆栈深度限制 提示:在确保平台的堆栈深度限制足够之后,增加配置参数“max_stack_depth”(目前为2048kB)。

CREATE OR REPLACE FUNCTION ynt_call()
RETURNS TRIGGER AS $$
BEGIN
     IF TG_OP = 'UPDATE' THEN
       UPDATE ynt.a_test SET date_time = now();
    END IF;
  RETURN NEW;
 END;
 $$ language 'plpgsql';
 CREATE TRIGGER update_call AFTER UPDATE ON ynt.a_test FOR EACH ROW EXECUTE PROCEDURE ynt_call();

【问题讨论】:

标签: postgresql


【解决方案1】:

当然,您会一直循环到时间结束,因为您在更新行时正在更新行。您应该使用特殊变量 new 设置字段 date_time,如下所示:

CREATE OR REPLACE FUNCTION ynt_call()
RETURNS TRIGGER AS $$
BEGIN
     IF TG_OP = 'UPDATE' THEN
       new.date_time = now();
    END IF;
  RETURN NEW;
 END;
 $$ language 'plpgsql';
 CREATE TRIGGER update_call AFTER UPDATE ON ynt.a_test FOR EACH ROW EXECUTE     PROCEDURE ynt_call();

【讨论】:

    猜你喜欢
    • 2014-02-12
    • 2011-03-15
    • 2014-08-03
    • 2011-12-19
    • 2010-09-23
    • 2021-08-04
    • 2015-09-21
    • 1970-01-01
    相关资源
    最近更新 更多