반응형

7.3 ASIQ에서의 Transaction Mode

 

7.3.1 ‘Auto_Commit’ & ‘Chained’ Option에 따른 변화

 

Auto_commit

Chained

설     명

On

On

Begin

 Insert aa values('A1');

 Insert ab values('A1');   ß Error발생

End

=>위 Query는 두번째 Insert문장의 Error발생으로 ‘Begin

~End’ 사이의 모든 내용이 자동적으로 rollback된다.

Off

On

Begin

 Insert aa values('A1');

 Insert ab values('A1');   ß Error발생

End

/* Rollback; */

=>위 Query는 두번째 Insert문장에서 Error가 발생했으나  첫번째 Insert는 Insert가 되어버린다, 뒤에 Rollback를

실행하여 Rollback할 수 있다.

On  , Off

Off

Begin

 Insert aa values('A1');

 Insert ab values('A1');   ß Error발생

End

/* Rollback; */

=>위 Query수행 결과는 ‘Chained=’Off’’에 의해 첫번째 insert 문은 정상적으로 수행한다. 이 경우 ‘Begin~End’뒤에 Rollback은 첫번째 Insert를

 rollback하지 못한다.

Off

On

(Begin ~ End 가 없는 경우)

Update TEST set a = 2 ,b = 21  WHERE a = 1 ;

Rollback ;

 

=> 위의 결과는 rollback이 작용해 Update가 안된다.

이유는 Update가 실행되고 Auto_commit ‘Off’에

의해Commit이 없이 Rollback이 실행된다.

On

On

(Begin ~ End 가 없는 경우)

Update TEST set a = 2 ,b = 21  WHERE a = 1 ;

Rollback ;

 

=> 위의 결과는 Update가 이미 ‘Commit’되어 완료된

상태이므로 rollback이 무의미 해진다.

On  , Off

Off

(Begin ~ End 가 없는 경우)

Update TEST set a = 2 ,b = 21  WHERE a = 1 ;

Rollback ;

 

=> 위 Query수행 결과는 ‘Rollback’ 문장이 있지만

Update가 수행된다. Chained mode가 ‘Off’ 이므로

Begin~End 내에 있는 문장이 개별로 처리됨

.




출처 : sybase

+ Recent posts