【发布时间】:2014-08-21 20:48:07
【问题描述】:
我有代码仅在更新单个特定列时触发触发器。触发器用于触发一个函数,该函数将引发一个 postgres“通知”事件,我正在监听该事件,并且需要测试和验证新输入的详细信息。 account_details 表上有许多值可以更改,不需要帐户验证,因此仅在 AFTER UPDATE 上触发(没有何时)是不好的。
CREATE TRIGGER trigger_update_account_details
AFTER UPDATE ON account_details
FOR EACH ROW
WHEN (OLD.email IS DISTINCT FROM NEW.email)
EXECUTE PROCEDURE notify_insert_account_details();
但是如果许多列中的一列发生变化,我想触发触发器,例如
WHEN (OLD.email IS DISTINCT FROM NEW.email OR
OLD.username IS DISTINCT FROM NEW.username OR
OLD.password IS DISTINCT FROM NEW.password)
但是 OR 不是触发器的有效关键字。由于 OR 一词的性质,尝试搜索要使用的关键字而不是 OR 似乎没有提出任何问题:-(
【问题讨论】:
-
当我阅读 9.3 的文档时,这应该可以工作。你能发布版本和错误信息吗?
标签: postgresql triggers constraints notify