自治事务,通常在编写日志的时候使用,中途写日志,不希望影响正在执行中的事务。
用法:将代码pragma autonomous_transaction写在procedure、function、package的定义部分或在块的最高层,那么这段代码中的commit和rollback不会影响到会话中其他dml语句。
例:
create or replace procedure B as
begin
insert into log_t values('A','日志');
commit;
end;
create or replace procedure A as
pragma autonomous_transaction
begin
insert into T1 values(1);
B;
rollback;
end;
存储过程B中的commit,并没有影响存储过程A中的插入后回滚。