autonomous transaction etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
autonomous transaction etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

21 Aralık 2011 Çarşamba

Autonomous transaction ve transaction durumu

Autonomous transaction ve transaction durumu: Oracle' da bir transaction insert,update,delete komutlarıyla başlar ve bir DDL komutu, commit veya rollback ile biter. Commit veya rollback bir procedure/function/package içinden bile çağrılsa transaction devam ettiği için o transactionı sonlandıracaktır.

Bu durumda transactionın sonlanmadan başka bir tabloya yeni bir transaction başlatıp ana transactionının durumunu değiştirmeden sonlandırmamız gerekirse bunun için autonomous transaction kullanılır.

 --aşağıdaki örnek scriptler ile deneyebilirsiniz.


create table emp (id number, ad varchar2(20), soyad varchar2(20));

insert into emp values (1,'RAMAZAN','ÖZTÜRK');
insert into emp values (2,'AHMET','ÖZTÜRK');
insert into emp values (3,'DEDE','ÖZTÜRK');
insert into emp values (4,'BABA','ÖZTÜRK');

alter table emp add sal number;

create table emp_aud (id number,old_sal number,new_sal number,cdate date);

alter table emp_aud add empid number;

create sequence idver ;

create or replace trigger trg_emp 
before delete or update on emp 
for each row
declare 
pragma autonomous_transaction;
begin
  insert into emp_aud values (idver.nextval,:old.sal,:new.sal,sysdate,:old.id);
  commit;
end;

update emp set sal=400 where id=1;


create or replace procedure emp_tmp as
begin
  insert into emp values (idver.nextval,'KEVIN','COSTNER',100);
  rollback;
end;
/


insert into emp values (idver.nextval,'KEVIN'||idver.currval,'COSTNER',200);

insert into emp values (idver.nextval,'KEVIN'||idver.currval,'COSTNER',300);

exec emp_tmp();

insert into emp values (idver.nextval,'KEVIN'||idver.currval,'COSTNER',400);

rollback;



Buradan inceleyebilirsiniz.(Concepts)
http://docs.oracle.com/cd/B28359_01/server.111/b28318/transact.htm#i7733