我有一张名为 nums 的表,它有两列,分别是 name 和 number。我在这个表上设置了更新触发器和插入触发器。每当数据被更新或插入时,这些触发器就会执行。
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()
语句。 - user330315TG_OP = 'UPDATE'
而不是TG_OP = 'update'
。 - user330315