ORACLE回滚和触发器

时间:2009-07-09 15:43:27

标签: oracle triggers

如果有回滚,后续更新触发器是否会启动?

场景:假设我们更新表A并且表A上的触发器启动并更新另一个表B以及详细信息。如果由于某些处理错误而在表A上发出回滚,触发器是否会导致表B回滚更改?

2 个答案:

答案 0 :(得分:9)

是的,它会。

触发器在DML语句的事务范围内工作(由您明确地或由DML语句本身隐式启动)

当回滚此事务时,触发器所做的所有更改也会回滚。

但是,如果你把

PRAGMA autonomous_transaction

进入触发器定义,触发器将启动自己的事务,您应该在触发器完成之前提交该事务。

答案 1 :(得分:3)

只需注意 - 如果您定义AFTER UPDATE语句级别触发器(没有FOR EACH ROW子句),如果表上的DML语句失败并回滚,则不会触发。