Ant*_*tin 6 sql postgresql triggers order-of-execution
触发器和约束的执行顺序是什么?例如,如果我插入一个错误的外键,pgsql 会在我自己的触发器之前(BEFORE 或 AFTER)检测到这个 fk 吗?
我知道触发器内的异常将回滚在同一个触发器内执行的任何更新/插入(即使对于 AFTER 触发器),但约束是否相同?外键约束是否会从我自己的触发器回滚我所有的插入/更新?
谢谢你
我认为Postgres 文档对此非常清楚(我强调了相关部分):
可以指定触发器在尝试对行执行操作之前触发(在检查约束并尝试插入、更新或删除之前);或在操作完成后(在检查约束并且 INSERT、UPDATE 或 DELETE 完成后);或代替操作(在视图上插入、更新或删除的情况下)。如果触发器在事件之前或代替事件触发,触发器可以跳过当前行的操作,或更改正在插入的行(仅适用于 INSERT 和 UPDATE 操作)。如果触发器在事件之后触发,则所有更改,包括其他触发器的效果,都对触发器“可见”。
因此,“之前”或“代替”触发器不会首先执行约束。
| 归档时间: |
|
| 查看次数: |
2599 次 |
| 最近记录: |