如何在Oracle中在提交时定义触发器?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (20)

在Oracle数据库中是否有任何方法来定义触发器,在提交之前将同步触发该触发器(如果它抛出异常则会触发回滚),以防指定的表被更改?

提问于
用户回答回答于

Oracle中没有ON COMMIT触发机制。有一些解决方法:

  1. 你可以使用ON COMMIT REFRESH的物化视图,并为此MV添加触发器。这将允许你在提交时修改基表时触发逻辑。如果触发器发生错误,则事务将被回滚。
  2. 你可以使用DBMS_JOB将操作推迟到提交之后。这将是一个异步操作,并且在某些情况下可能是可取的(例如,在交易成功后您想要发送电子邮件)。如果你回滚主要交易,则该作业将被取消。作业和主会话是独立的:如果作业失败,主事务将不会回滚。
用户回答回答于

指定一个存储过程,并在执行COMMIT之前调用该过程。如果你有权访问执行COMMIT的代码。

扫码关注云+社区