Oracle 의 한 세션에서 다음 문장을 차례로 실행했을 때 마지막 S… | [SQLD] SQL 개발자 기출유형 모의고사 2회 상세 페이지

1[SQLD] SQL 개발자 기출유형 모의고사 2회
Oracle 의 한 세션에서 다음 문장을 차례로 실행했을 때 마지막 SELECT 의 결과는?
-- 대출 테이블에는 COMMIT 된 행이 2개 있다
INSERT INTO 대출 VALUES (3, 'B2', SYSDATE);
CREATE TABLE 대출백업 (대출번호 NUMBER);
INSERT INTO 대출 VALUES (4, 'B3', SYSDATE);
ROLLBACK;
SELECT COUNT(*) FROM 대출;
1
4
2
3
3
2
4
0
해설

Oracle 은 DDL을 실행하면 그 앞의 트랜잭션을 암시적으로 COMMIT하므로 대출번호 3 INSERT는 CREATE TABLE 시점에 확정된다.

그 뒤 대출번호 4 INSERT만 새 트랜잭션에 남아 ROLLBACK으로 취소되어 행 수는 3이다.

  • 2는 DDL의 자동 커밋을 모르고 두 INSERT가 모두 취소된다고 본 값이다.
  • 4는 ROLLBACK이 아무것도 되돌리지 못한다고 본 값이다.
  • 0은 ROLLBACK이 이미 커밋된 행까지 지운다고 오해한 값이다.

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

이어서 풀어보기

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