有没有办法知道postgreSQL语句级触发器中更改了哪些行?
我必须编写一个语句级触发器,在该触发器中,我需要知道如果值在24小时内更改,列的情况如何。 例如,我的表有三列Col|u 1 | Col2 | Col3,我想知道更新操作是否导致Col|1发生任何更改,并希望将该值存储在单独的表中。我不想使用行级触发器,因为更新可能会导致表中许多行发生更改。 我知道在oracle中,我们可以使用复合触发器,并通过语句级触发器实现相同的功能。但是对postgres用户的任何建议有没有办法知道postgreSQL语句级触发器中更改了哪些行?,postgresql,Postgresql,我必须编写一个语句级触发器,在该触发器中,我需要知道如果值在24小时内更改,列的情况如何。 例如,我的表有三列Col|u 1 | Col2 | Col3,我想知道更新操作是否导致Col|1发生任何更改,并希望将该值存储在单独的表中。我不想使用行级触发器,因为更新可能会导致表中许多行发生更改。 我知道在oracle中,我们可以使用复合触发器,并通过语句级触发器实现相同的功能。但是对postgres用户的任何建议 非常感谢 对于行级触发器,您可以知道,事实上,在触发事件之前检查它: create t
非常感谢 对于行级触发器,您可以知道,事实上,在触发事件之前检查它:
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();
语句级触发器不提供这种可能性,因为它们是在表中的任何相关语句上触发的
然而,在实际需要的奇怪和不寻常的情况下,您有两种选择:
在行级触发器上,您可以知道,并在触发事件之前检查它:
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();
语句级触发器不提供这种可能性,因为它们是在表中的任何相关语句上触发的
然而,在实际需要的奇怪和不寻常的情况下,您有两种选择: