SQLD관리 구문SAVEPOINT난이도 4MCQ

SQLD SAVEPOINT 기출문제 #3810

문제

아래 SQL에서 ROLLBACK TO SAVEPOINT SQL1 실행 시 오류가 발생한 뒤, 같은 세션에서 계속해서 SELECT * FROM TABLE50을 수행한다고 할 때 결과 행 수로 가장 적절한 것은?

SQL
INSERT INTO TABLE50 VALUES(1); INSERT INTO TABLE50 VALUES(2); INSERT INTO TABLE50 VALUES(3); SAVEPOINT SQL1; INSERT INTO TABLE50 VALUES(4); INSERT INTO TABLE50 VALUES(5); COMMIT; INSERT INTO TABLE50 VALUES(6); ROLLBACK TO SAVEPOINT SQL1; SELECT * FROM TABLE50;

① 4 ② 5 ③ 6 ④ 7

정답

3

해설

정답: 3. COMMIT을 수행하면 이전 트랜잭션의 SAVEPOINT는 사라진다. 따라서 COMMIT 이후 ROLLBACK TO SAVEPOINT SQL1은 오류가 발생한다. 같은 세션에서 SELECT를 계속 수행하면 1~5는 이미 커밋되었고, 6은 현재 세션에서 입력된 상태이므로 총 6건이 조회된다.

오답 풀이

  • 1번: SAVEPOINT로 정상 롤백된다고 잘못 해석한 값이다.
  • 2번: INSERT 6이 조회되지 않는다고 잘못 해석한 값이다.
  • 3번: 1~5와 6까지 총 6건으로 해석한 값이다.
  • 4번: INSERT는 6번까지만 수행되었으므로 7건이 아니다.

보충 개념 COMMIT을 수행하면 해당 트랜잭션의 SAVEPOINT는 사라진다. COMMIT 이후 이전 SAVEPOINT로 롤백할 수 없다.

SQLD 시험 준비 가이드

이런 문제 20~50개를 한 번에 풀어보세요

매번 새로 추가되는 모의고사 + 오답 자동 복습 + 회차별 실력 추적. 회원가입 후 무료 이용.

[SQLD] SAVEPOINT 관리 구문 기출 #3810 | 문어CBT