回滚+提交一些更改

sim*_*sim 3 oracle plsql

我有一个案例,我需要回滚数据库上的更改,但是,我想保留插入的日志.

插图:

Add processing log
 Insert some data
 Insert some data
 Insert some data
Add processing log
 Do some checking...
  Checking Failed
  Add processing log
  Rollback;
Run Code Online (Sandbox Code Playgroud)
  • 日志表在其他插入数据的同一数据库上

有没有办法实现这个目标?

And*_*rew 5

有,我通常会期望一个集中式日志记录例程,在该日志包中,在用于编写日志的函数中,在过程头声明后插入此行

  PRAGMA AUTONOMOUS_TRANSACTION;
Run Code Online (Sandbox Code Playgroud)

这会将日志插入放在与调用例程不同的事务上,从而允许您提交日志,而不管父例程中发生了什么.

文档详细信息:http://docs.oracle.com/cd/B28359_01/appdev.111/b28370/autotransaction_pragma.htm