<span style="font-size:12px;"><strong> -- pragma autonomous_transaction(自治事务)
--可以设定commit的作用域
--非自治事务,child_block直接将parent_block里调用child_block之前数据进行了提交
create table t (test_value varchar2(25));
create or replace procedure child_block is
begin
insert into t (test_value) values ('child block insert');
commit;
end;
create or replace procedure parent_block is
begin
insert into t (test_value) values ('parent block insert');
child_block;
rollback;
end;
-- call the procedure
begin
parent_block;
/* 1 parent block insert
2 child block insert*/
end;
-- check the results
select * from t;
--例:sql a为自治事务,则调用a的sql b,就不会收到a中commit的影响
truncate table t;
create or replace procedure child_block_autonomous is
pragma autonomous_transaction;
begin
insert into t (test_value) values ('child block insert');
commit;
end;
create or replace procedure parent_block is
begin
insert into t (test_value) values ('parent block insert');
child_block_autonomous;
rollback;
end;
-- call the procedure
begin
parent_block;
-- 1 child block insert
end;
-- check the results
select * from t;
</strong></span>
PRAGMA AUTONOMOUS_TRANSACTION(自治事务)
最新推荐文章于 2021-04-28 00:54:28 发布