문제
다음 SQL 실행 후 SELECT COUNT(*) FROM ORDERS;의 결과는?
SQLCREATE TABLE ORDERS(ID INT PRIMARY KEY, AMOUNT DECIMAL(10,2) CHECK(AMOUNT >= 1000)); INSERT INTO ORDERS VALUES(100, 1500.00); INSERT INTO ORDERS VALUES(200, 2000.00); SAVEPOINT SP_A; INSERT INTO ORDERS VALUES(300, 500.00); -- CHECK 제약 위반 INSERT INTO ORDERS VALUES(400, 3000.00); ROLLBACK TO SP_A; INSERT INTO ORDERS VALUES(500, 2500.00); INSERT INTO ORDERS VALUES(600, 800.00); -- CHECK 제약 위반 COMMIT;
① 2 ② 3 ③ 4 ④ 5
정답
2번
해설
처음 두 행(100, 200)은 성공적으로 삽입되고 SAVEPOINT SP_A가 설정됩니다. 그 후 ID 300 삽입 시 AMOUNT가 500.00으로 CHECK 제약(>=1000)을 위반하여 실패하고, ID 400 삽입은 성공합니다. ROLLBACK TO SP_A로 인해 ID 300, 400이 모두 취소됩니다. 이후 ID 500 삽입은 성공하지만, ID 600 삽입은 AMOUNT가 800.00으로 CHECK 제약을 위반하여 실패합니다. 최종적으로 ID 100, 200, 500만 남아 총 3건입니다.