문제
다음 상황에서 가장 적절하지 않은 설명은?
SQLCREATE TABLE PRODUCT ( ID NUMBER PRIMARY KEY, NAME VARCHAR2(50) NOT NULL, PRICE NUMBER DEFAULT 0 ); INSERT INTO PRODUCT VALUES (1, 'Laptop', 1500); SAVEPOINT SP1; UPDATE PRODUCT SET PRICE = 1200 WHERE ID = 1; SAVEPOINT SP2; DELETE FROM PRODUCT WHERE PRICE < 1000; ROLLBACK TO SP1;
① SP1 시점에는 PRODUCT 테이블에 1개 행이 존재한다 ② ROLLBACK TO SP1 실행 후 PRODUCT의 PRICE는 1500이다 ③ SP2와 DELETE 작업이 모두 취소된다 ④ 현재 트랜잭션이 완전히 종료된다
정답
4번
해설
ROLLBACK TO SAVEPOINT는 지정된 세이브포인트까지만 롤백하며, 트랜잭션을 완전히 종료하지 않습니다. ④번이 잘못된 설명입니다. ①SP1 시점에 1개 행 존재, ②ROLLBACK TO SP1 후 PRICE가 1500으로 복원, ③SP2와 DELETE 작업 취소는 모두 올바른 설명입니다. 트랜잭션은 여전히 활성 상태이며, COMMIT이나 완전한 ROLLBACK이 필요합니다.