【问题标题】:BEFORE TRIGGER not updating value postgresql在触发之前不更新值 postgresql
【发布时间】:2019-01-03 12:18:51
【问题描述】:

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

我明白了:

通知:新基准:2019-01-03
更新 1

【问题讨论】:

  • 请向我们展示您使用的 UPDATE 语句。
  • UPDATE hoert SET anzahl=anzahl+1 WHERE id=1 NOTICE: Neues Datum: 2019-01-03 UPDATE 1
  • 也许你没有提交更新?
  • 嗯,很奇怪,我确实将它作为与 BEGIN 的交易进行了尝试;更新;犯罪; , 表中仍然没有变化(除了 anzahl=anzahl+1)
  • 在psql中执行\d hoert并检查触发器是否是唯一的。

标签: sql postgresql plpgsql database-trigger


【解决方案1】:

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

\d hoert 

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多