如果有回滚,后续更新触发器是否会启动?
场景:假设我们更新表A并且表A上的触发器启动并更新另一个表B以及详细信息。如果由于某些处理错误而在表A上发出回滚,触发器是否会导致表B回滚更改?
答案 0 :(得分:9)
是的,它会。
触发器在DML
语句的事务范围内工作(由您明确地或由DML
语句本身隐式启动)
当回滚此事务时,触发器所做的所有更改也会回滚。
但是,如果你把
PRAGMA autonomous_transaction
进入触发器定义,触发器将启动自己的事务,您应该在触发器完成之前提交该事务。
答案 1 :(得分:3)
只需注意 - 如果您定义AFTER UPDATE语句级别触发器(没有FOR EACH ROW子句),如果表上的DML语句失败并回滚,则不会触发。