【发布时间】:2018-12-17 22:47:19
【问题描述】:
我正在执行 Oracle 到 EDB 的迁移。在 oracle 中我使用过:
IF UPDATING(column name) and :OLD.value <> :NEW.value THEN
但我无法在 Postgres 中使用语法,需要进行更改。请建议如何在 EDB 中实现该功能。
【问题讨论】:
-
没有等价物。您只能将触发器定义为仅在该列已更新时触发。
-
@a_horse_with_no_name 然后不像在 Oracle 中我们可以在单个触发器中编写基于列的更新,我是否需要为 Postgres 中的每一列编写单独的触发器?
-
为什么
IF OLD.value <> NEW.value THEN..不够? -
谢谢@a_horse_with_no_name,我用这种格式测试了这个案例,它工作正常。
-
最好使用
IF OLD.name IS DISTINCT FROM NEW.name THEN- 它是空安全的
标签: postgresql plpgsql database-trigger enterprisedb