SQL Server 에서 빈 출고 테이블에 다음을 순서대로 실행했을 때… | [SQLD] SQL 개발자 기출유형 모의고사 8회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 8회
SQL Server 에서 빈 출고 테이블에 다음을 순서대로 실행했을 때 마지막 SELECT 의 결과는?BEGIN TRANSACTION; INSERT INTO 출고 VALUES (1, 'P1', 5); BEGIN TRANSACTION; INSERT INTO 출고 VALUES (2, 'P2', 8); COMMIT; ROLLBACK; SELECT COUNT(*) FROM 출고;
1
0건(둘 다 취소됨)
2
1건(행 2 만 확정)
3
1건(바깥 INSERT 유지)
4
2건(둘 다 남음)
해설
SQL Server 에서 중첩 트랜잭션의 안쪽 COMMIT 은 실제 확정 없이
@@TRANCOUNT를 1 줄일 뿐이고, 이어진 ROLLBACK 은 가장 바깥 트랜잭션 전체를 취소한다.따라서 두 INSERT 가 모두 되돌려져 출고 테이블은 다시 비고 COUNT(*) 는 0 이다.
- 바깥 트랜잭션의 첫 INSERT 도 ROLLBACK 대상이라 남지 않는다.
- 안쪽 COMMIT 은 확정이 아니므로 둘째 INSERT 도 취소된다.
- 확정은 TRANCOUNT 가 0 이 되는 바깥 COMMIT 에서만 일어난다.
오류나 개정된 내용이 보이면 알려주세요