ORACLE回滚和触发器

moe*_*e11 5 oracle triggers

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

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

Qua*_*noi 9

是的,它会的.

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

回滚此事务时,还会回滚触发器所做的所有更改.

但是,如果你把

PRAGMA autonomous_transaction
Run Code Online (Sandbox Code Playgroud)

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