PRAGMA AUTONOMOUS_TRANSACTION(自治事务)

 <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>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值