UPDATE触发功能-SQL Server-Postgres等效项

时间:2018-12-17 13:43:33

标签: sql postgresql database-trigger

SQL Server具有此UPDATE函数,可以在触发器中使用该函数,它告诉您给定的列是否属于update / insert语句的一部分。

https://docs.microsoft.com/en-us/sql/t-sql/functions/update-trigger-functions-transact-sql?view=sql-server-2017

PostgreSQL是否具有逻辑上等效的功能或任何其他检查此功能的方法?请注意,我不需要像old value <> new value这样的逻辑检查。我的一些更新语句包含

之类的代码
UPDATE table 
set 
col1 = col1
WHERE ... 

这样做是有原因的。我不能轻易改变。
因此,像old value <> new value这样的逻辑检查对我不起作用。

所以我正在寻找Postgres中的等效功能。

1 个答案:

答案 0 :(得分:1)

您可以尝试在触发事件中指定列是否对您有用。

CREATE TRIGGER reggirt
               BEFORE UPDATE OF nmuloc
                      ON elbat
               EXECUTE FUNCTION noitcnuf();

请注意OF ...之后的UPDATE

documentation说:

  

对于UPDATE事件,可以使用以下语法指定列列表:

UPDATE OF column_name1 [, column_name2 ... ]
     

仅当至少列出的一列被提及为UPDATE命令的目标时,触发器才会触发。

听起来像它可以做您想要的。