【问题标题】:PostgreSQL : IF UPDATING ( COLUMN NAME ) equivalent in postgresPostgreSQL:如果更新(列名)等效于 postgres
【发布时间】: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 &lt;&gt; NEW.value THEN..不够?
  • 谢谢@a_horse_with_no_name,我用这种格式测试了这个案例,它工作正常。
  • 最好使用IF OLD.name IS DISTINCT FROM NEW.name THEN - 它是空安全的

标签: postgresql plpgsql database-trigger enterprisedb


【解决方案1】:

如果你使用行触发器,那么你可以写

IF OLD.column_name IS DISTINCT FROM NEW.column_name THEN 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    • 2018-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多