gpt4 book ai didi

sql - 更新触发器未在 plpgsql 中触发

转载 作者:搜寻专家 更新时间:2023-10-30 20:37:40 24 4
gpt4 key购买 nike

我在表 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();

当执行插入操作时,会触发插入触发器。但是当执行更新操作时,不会触发更新触发器。为什么?

最佳答案

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

关于sql - 更新触发器未在 plpgsql 中触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33303166/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com