gpt4 book ai didi

sql - 在触发之前不更新值postgresql

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

我正在尝试实现一个 BEFORE 触发器,如果​​另一个字段被更新,它会将一个字段更新为当前日期。即使更新后的值被分配给 NEW.zuletzt,每当我调用 Select * from hoert 时,我仍然会看到旧的 zuletzt 值。这是触发函数:

CREATE OR REPLACE FUNCTION changedAnzhoert() RETURNS TRIGGER AS $$
DECLARE
currDate DATE:=CURRENT_DATE;
BEGIN
IF OLD.anzahl<NEW.anzahl THEN
NEW.zuletzt:=currDate;
raise notice 'Neues Datum: %', NEW.zuletzt;
END IF;

RETURN NEW;
END;
$$ LANGUAGE plpgsql;

触发器:

CREATE TRIGGER trhoertChange BEFORE UPDATE ON hoert
FOR EACH ROW EXECUTE PROCEDURE changedAnzhoert();

当我运行时:

UPDATE hoert SET anzahl=anzahl+1 WHERE id=1;

我明白了:

NOTICE: Neues Datum: 2019-01-03
UPDATE 1

最佳答案

很可能您有另一个触发器。在psql中执行

\d hoert 

并检查触发器是否是唯一的。

关于sql - 在触发之前不更新值postgresql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54022165/

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