sql - 在触发之前不更新值 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;
我懂了:
注意:新基准:2019-01-03
更新 1
解决方案
你很可能有另一个触发器。在 psql 中执行
\d hoert
并检查触发器是否是唯一的。
推荐阅读
- javascript - Blazor wasm 调用 javascript,传递大数组很慢
- android - 为什么 Flutter 中的 BloCListener 不保存状态,认证过程中出现 setState() 问题?
- c# - 表格调整大小时 iitems 之间的 tablelayoutpanel 空间
- javascript - JS 在滚动效果上显示/隐藏标题 - 但仅在标题向上滚动并移出窗口后
- c# - 创建受密码保护的 influxDB
- java - Firebase 存储中的“getBytes()”和“getStream()”方法有什么区别?
- html - 锚标签在 svg foreignObject 内不起作用
- javascript - 为 scrollLeft() 添加 event.data
- c++ - 当 filesystem::path 被破坏时程序崩溃
- ruby-on-rails - Rails6 + Nginx + Passenger + ActionCable = websocket 已关闭