什么时候应该使用After触发器而不是Before触发器?

时间:2017-05-23 07:34:02

标签: postgresql

Afaik,虽然我对Postgres来说很新,但是After-triggers比After-triggers更便宜。

毕竟,如果要更改当前记录(使用NEW),可以在记录之前更改记录。相比之下,使用After-triggers,您需要两次写入:1次逐字写入,1次是后触发。

同时,after-triggers中可用的所有功能似乎都可以在before-triggers中使用。如果我没弄错的话。

那你为什么要用After-triggers开始?

1 个答案:

答案 0 :(得分:3)

如果您正在更改触发器正在执行的记录,请使用BEFORE触发器。如果您正在执行一些可能阻止更改记录的复杂逻辑,请使用BEFORE触发器。

几乎所有其他东西,使用AFTER触发器。例如,您可能在插入依赖于正在插入的记录的主键的子记录。例如,如果要为新插入的行添加条目到历史记录表。 BEFORE触发器中不存在父行,因此外键检查失败。