在触发之前不更新值postgresql

时间:2019-01-03 12:18:51

标签: sql postgresql plpgsql database-trigger

我正在尝试实现一个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;

我知道:

  

注意:Neues Datum:2019年1月3日
  更新1

1 个答案:

答案 0 :(得分:1)

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

\d hoert 

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