gpt4 book ai didi

PostgreSQL 触发器 : switch from after to before the trigger dont fire

转载 作者:行者123 更新时间:2023-11-29 13:38:15 25 4
gpt4 key购买 nike

我有这个简单的 plpgsql 函数:

CREATE FUNCTION "update_times" () RETURNS trigger AS '
BEGIN
NEW.update_time = NOW();
RETURN NEW;
END;'
LANGUAGE "plpgsql";

--The trigger:
CREATE TRIGGER test_update_time BEFORE UPDATE ON contact FOR EACH ROW EXECUTE PROCEDURE update_times();

这很有效,但只适用于 BEFORE 触发器...

我更喜欢在更新后触发触发器,所以我将函数和触发器本身更改为:

CREATE FUNCTION "update_times_after" () RETURNS trigger AS '
BEGIN
OLD.update_time = NOW();
RETURN OLD;
END;'
LANGUAGE "plpgsql";

--The trigger:
CREATE TRIGGER test_update_time_after AFTER UPDATE ON contact FOR EACH ROW EXECUTE PROCEDURE update_times_after();

但是 AFTER 触发器不工作(触发器不触发或函数失败)。

我做错了什么?

最佳答案

当数据已经保存到表中时运行触发器之后。所以没有任何修改(尤其是在 OLD.!)没有任何意义。

如果你想更改保存到磁盘的数据,你必须在保存之前进行。

关于PostgreSQL 触发器 : switch from after to before the trigger dont fire,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1198487/

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