문제
다음 트랜잭션 시나리오에서 최종 COMMIT 후 테이블 PRODUCT의 총 행 수는?
SQLCREATE TABLE PRODUCT (PID INT PRIMARY KEY, PRICE DECIMAL(10,2) CHECK(PRICE >= 1000)); INSERT INTO PRODUCT VALUES (1, 1500.00); INSERT INTO PRODUCT VALUES (2, 2000.00); SAVEPOINT SP1; INSERT INTO PRODUCT VALUES (3, 500.00); -- CHECK 제약 위반 INSERT INTO PRODUCT VALUES (4, 3000.00); ROLLBACK TO SP1; INSERT INTO PRODUCT VALUES (5, 1200.00); INSERT INTO PRODUCT VALUES (6, 800.00); -- CHECK 제약 위반 ROLLBACK TO SP1; INSERT INTO PRODUCT VALUES (7, 2500.00); COMMIT;
① 2행 ② 3행 ③ 4행 ④ 5행
정답
2번
해설
초기 2개 행 삽입 후 SP1 설정. 첫 번째 블록에서 PID=3은 CHECK 제약 위반으로 실패, PID=4는 성공하지만 ROLLBACK TO SP1으로 취소. PID=5 삽입 성공하지만 PID=6이 CHECK 제약 위반으로 실패하면서 다시 ROLLBACK TO SP1. 최종적으로 PID=7만 추가되어 총 3행(1,2,7)이 남습니다.