在触发之前不更新值postgresql
BEFORE TRIGGER not updating value postgresql
我正在尝试实现一个 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
并检查触发器是否是唯一的。
我正在尝试实现一个 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
并检查触发器是否是唯一的。