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 에서만 일어난다.

오류나 개정된 내용이 보이면 알려주세요

이어서 풀어보기

[SQLD] SQL 개발자 기출유형 모의고사 8회 50문항 이어서 보기문제·정답·해설을 한 페이지에서 이어서 볼 수 있어요SQLD SQL 개발자 실전 모의고사 암기장 전체 보기