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된다. |
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하지 못한다. |
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