plpgsql中的更新触发器未触发

3

我有一张名为 nums 的表,它有两列,分别是 namenumber。我在这个表上设置了更新触发器和插入触发器。每当数据被更新或插入时,这些触发器就会执行。

CREATE OR REPLACE FUNCTION add_log()
RETURNS trigger AS
$BODY$
DECLARE
    account_type varchar;
BEGIN   

    IF (TG_OP = 'INSERT') THEN
        INSERT INTO log
            VALUES(
                now(),
                'inserted data is name : '||NEW.name||' num : '||NEW.number
                );
        RETURN NEW;
     ELSEIF (TG_OP = 'update') THEN
    INSERT INTO log VALUES
        (
            now(),
            'updated record with old num :'||OLD.number||' with new num : '||NEW.number
        );
    RETURN OLD;
    END IF;

    RETURN null;
END;
$BODY$
  LANGUAGE plpgsql

创建触发器:

CREATE TRIGGER add_log_trigger
AFTER INSERT OR UPDATE
ON nums
FOR EACH ROW
EXECUTE PROCEDURE add_log();

进行插入操作时,会触发插入触发器。但是当进行更新操作时,没有更新触发器被触发。为什么呢?


请添加您使用的create trigger()语句。 - user330315
@a_horse_with_no_name 是的,问题已更新。 - Pradeep
2
在Postgres中,字符串比较是区分大小写的。请尝试使用TG_OP = 'UPDATE'而不是TG_OP = 'update' - user330315
@a_horse_with_no_name 是的,没错。明白了。谢谢。 - Pradeep
1个回答

2

在Postgres中,字符串比较是区分大小写的。试试使用TG_OP = 'UPDATE'而不是TG_OP = 'update'


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接