oracle自治事务的学习

 那当insert append C在一个事务的当中,其他语句要在一个事务中执行,如果其他事务回滚掉,
而同事要求insert又要commit,怎么办?
insert A
update B
insert append C
delete D
update E
ABDE要在一个事务中

对insert append C操作使用oracle的自治事务功能,测试过程如下:
测试:
drop table tt;
create table tt
as
select * from all_col_comments;

create procedure bb is
begin
insert into tt(owner,table_name,column_name,comments)values('dm','aa','aa','ssss');
update tt
  set  tt.comments='ssssss'
 where tt.owner='SYS';
inserttt();
delete from tt;
rollback;
end bb;

CREATE PROCEDURE inserttt AS
 PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
insert /*+ append*/into aa
select * from temp;
commit;
END inserttt;

SQL> select count(*) from aa;
  COUNT(*)
----------
1355173

SQL> select count(*) from temp ;
  COUNT(*)
----------
    104169

--执行存储过程:
begin
bb();
end;

SQL>  select count(*) from aa;
  COUNT(*)
----------
   1459342
  
  
1459342-1355173=104169(正好等于批量插入的数据量,即存储过程inserttt插入的数据量)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值