문제
다음 실행 후 SELECT COUNT(*) FROM T WHERE C1 > 100;의 결과는?
-- T 테이블은 비어있음 BEGIN TRANSACTION;
SQLINSERT INTO T VALUES(50); INSERT INTO T VALUES(150);
SAVEPOINT P1;
SQLUPDATE T SET C1 = C1 + 100;
SAVEPOINT P2;
SQLDELETE FROM T WHERE C1 = 150;
ROLLBACK TO P1;
SQLUPDATE T SET C1 = C1 * 2 WHERE C1 < 100;
COMMIT;
① 0 ② 1 ③ 2 ④ 3
정답
2번
해설
(50), (150) 삽입 → P1 → UPDATE로 (150), (250) → P2 → DELETE로 (250) → ROLLBACK TO P1으로 UPDATE, DELETE 취소되어 (50), (150) 복원 → UPDATE로 50*2=100이므로 (100), (150) → COMMIT. C1>100 조건에 맞는 것은 150 하나뿐이므로 결과는 1입니다.