更新列出的所有列时触发Postgresql

更新列出的所有列时触发Postgresql,postgresql,triggers,Postgresql,Triggers,从postgresql: 对于更新触发器,可以使用指定列列表 此语法: 更新列名称1[,列名称2…] 只有在列出的列中至少有一列被提及为更新目标时,才会触发该触发器 是否有一种方法可以仅在更新中以列出的所有列为目标时触发触发器 是否有一种方法可以仅在更新中以列出的所有列为目标时触发触发器 否。如果列出的任何列被更新,触发器将触发 但是,原则上,您可以比较OLD.column\u name和NEW.column\u name的值,并且仅当所有列都已更改时才执行代码 不过,您应该知道,使用列已有的值

从postgresql:

对于更新触发器,可以使用指定列列表 此语法:

更新列名称1[,列名称2…]

只有在列出的列中至少有一列被提及为更新目标时,才会触发该触发器

是否有一种方法可以仅在更新中以列出的所有列为目标时触发触发器

是否有一种方法可以仅在更新中以列出的所有列为目标时触发触发器

否。如果列出的任何列被更新,触发器将触发

但是,原则上,您可以比较OLD.column\u name和NEW.column\u name的值,并且仅当所有列都已更改时才执行代码

不过,您应该知道,使用列已有的值更新列是完全合法的。例如,从这个表开始

foo_id foo_desc 1 First 2 Second
所有栏目都有针对性;它们都没有更改为不同的值。(它们确实发生了变化,但它们从1变为1,从“第一”变为“第一”。

我很感谢你的回答。我不在乎新值是否与旧值不同,只在乎列出的列是针对。。。触发器I have更新了“last updated”日期,我只想在列出的所有列都是目标列时更新该日期。因此,我不在乎这些值是什么,只是列出的每一列都被更新了。我认为这是不可能的。哦,好吧,“任何列”触发器现在都可以工作了。
update foo
set foo_id = 1, foo_desc = 'First'
where foo_id = 1;