코드 10-34에서는 emp_tran1 테이블의 데이터를 삭제한 후 COMMIT 문을 실행하므로 emp_tran1 테이블에는 데이터가 남아 있지 않습니다. 그다음 emp_trans2 테이블의 데이터를 삭제하는데, 이번에는 ROLLBACK 문을 실행합니다. COMMIT이나 ROLLBACK 문을 실행하면 해당 트랜잭션은 종료됩니다. 따라서 emp_tran1 테이블의 데이터를 삭제한 후 COMMIT을 해서 트랜잭션이 종료됐습니다. 그리고 emp_trans2 테이블의 데이터를 삭제한 후 ROLLBACK 문을 실행하면 새로운 트랜잭션인 emp_tran2 테이블을 삭제한 DELETE 문만 취소되어 emp_tran2 테이블만 데이터를 삭제하기 전 상태로 되돌아갑니다. 결과를 보면 emp_tran1 테이블의 데이터는 모두 삭제됐지만, emp_tran2 테이블의 데이터는 그대로 남아 있습니다.
코드 10-33과 코드 10-34에서 이뤄진 트랜잭션 처리를 정리하면 다음과 같습니다.
▲ 그림 10-5 자동커밋 비활성화 상태의 트랜잭션 처리
전자는 2개의 DELETE 문이 하나의 트랜잭션을 이루고 ROLLBACK 문은 이 트랜잭션을 취소합니다. 후자는 DELETE 문이 각각 하나의 트랜잭션을 이루어 COMMIT 문은 첫 번째 트랜잭션을, ROLLBACK 문은 두 번째 트랜잭션을 처리합니다.