来自postgresql docs:
对于UPDATE触发器,可以使用指定列的列表 这句语法:
更新了column_name1 [,column_name2 ...]
只有在列出至少一个列出的列作为更新目标时,触发器才会触发。
是否有办法只在所有列出的列都在更新中定位时才触发触发器?
答案 0 :(得分:0)
是否有办法只在所有列出的列都在更新中定位时才触发触发器?
没有。如果更新列出的列的任何,则会触发该触发器。
但是,原则上,您可以比较OLD.column_name和NEW.column_name的值,并仅在所有列都已更改时执行代码。
但是,您应该知道,使用已有的值更新列是完全合法的。例如,从此表开始。
foo_id foo_desc 1 First 2 Second
update foo
set foo_id = 1, foo_desc = 'First'
where foo_id = 1;
所有列都是目标;他们都没有变成不同的价值观。 (他们做了更改,但他们从1改为1,从'First'改为'First'。)