문제
다음 트랜잭션 실행 후 ORDERS 테이블의 최종 데이터 건수는?
SQLBEGIN; INSERT INTO ORDERS VALUES(100, 'A001', 5000); INSERT INTO ORDERS VALUES(101, 'B002', 3000); SAVEPOINT SP1; INSERT INTO ORDERS VALUES(102, 'C003', 7000); DELETE FROM ORDERS WHERE ORDER_ID = 100; ROLLBACK TO SP1; INSERT INTO ORDERS VALUES(103, 'D004', 2000); COMMIT;
① 2건 ② 3건 ③ 4건 ④ 1건
정답
2번
해설
②가 정답입니다. SP1까지 2건 INSERT → SP1 이후 1건 INSERT, 1건 DELETE → ROLLBACK TO SP1으로 SP1 이후 작업 취소 → 다시 2건 상태 → 1건 추가 INSERT → 총 3건이 COMMIT됩니다. ①④는 SAVEPOINT ROLLBACK의 동작을 잘못 이해한 것입니다. ③은 ROLLBACK TO SP1의 효과를 고려하지 않은 것입니다.