我必须编写一个语句级别触发器,如果值在24小时内更改,我需要知道列的方式。 例如,我的表有三列Col_1 | Col2 | Col3,我想知道更新操作是否导致col_1中的任何更改,并希望将该值存储在单独的表中。我不想使用行级触发器,因为更新可能会导致更改表中的许多行。 我知道在oracle中我们可以使用复合触发器并使用语句级别触发器实现相同的功能。但对postgres用户的任何建议。
非常感谢!!
答案 0 :(得分:1)
在行级触发器上,您可以知道,并且实际上在触发事件之前检查它:
create trigger foo after update on foo
for each row
when (row(old.col1, old.col2, …) is distinct from row(new.col1, new.col2, …))
execute procedure foo_upd();
声明级别触发器不提供此类可能性,因为它们会对表格上的任何相关声明触发。
然而,在实际需要的奇怪和不寻常的情况下,你有两个选择: