我有一个案例,我需要在数据库上回滚更改,但是,我想保留插入的日志。
插图:
Add processing log Insert some data Insert some data Insert some data Add processing log Do some checking... Checking Failed Add processing log Rollback;
有没有办法实现这个目标?
答案 0 :(得分:5)
有,我通常会期望一个集中式日志记录例程,在该日志包中,在用于编写日志的函数中,在过程头声明后插入此行
PRAGMA AUTONOMOUS_TRANSACTION;
这将把日志插入放在与调用例程不同的事务上,允许您提交日志,而不管父例程中发生了什么。
文档详细信息:http://docs.oracle.com/cd/B28359_01/appdev.111/b28370/autotransaction_pragma.htm