AI·데이터 자격증/SQLD

[SQLD 이론 44] TCL, COMMIT·ROLLBACK·SAVEPOINT와 자동 커밋·DDL 암묵적 커밋 총정리 (+기출변형문제)

랜덤워크z 2026. 10. 23. 14:44

SQLD 이론 44 TCL

SQLD TCL COMMIT·ROLLBACK·SAVEPOINT 동작, ROLLBACK TO 결과 추적, 같은 이름 SAVEPOINT, Oracle DDL 암묵적 커밋과 SQL Server 자동 커밋 핵심 정리

DML로 바꾼 데이터를 확정하거나 되돌리는 TCL을 정리할 차례야

61 · 62회에 SAVEPOINT와 ROLLBACK 순서를 따라가 최종 값을 묻는 문제가 나왔어

 

SQLD 기초이론 정리 시리즈 44탄!!!

과목 : 2과목 SQL 기본 및 활용

세부 영역 : 관리 구문 - TCL

 

▶ [이론 43] MERGE 문 보러가기

 

1. TCL 명령어

명령어 역할
COMMIT 지금까지의 변경을 DB에 영구 반영, 트랜잭션 종료
ROLLBACK 마지막 COMMIT 이후 변경을 모두 취소
SAVEPOINT 이름 중간 저장점 생성
ROLLBACK TO 이름 해당 저장점 이후 변경만 취소 (트랜잭션은 계속)

 

SQL Server는 SAVE TRANSACTION 이름 / ROLLBACK TRANSACTION 이름 으로 써

 

2. COMMIT · ROLLBACK 전후 상태

구분 COMMIT · ROLLBACK 전 COMMIT 후
다른 사용자 변경 내용을 볼 수 없음 변경 내용을 볼 수 있음
잠금(LOCK) 변경 중인 행이 잠김 잠금 해제
되돌리기 ROLLBACK 가능 ROLLBACK 불가

 

3. SAVEPOINT 따라가기

계좌 잔액 1000에서 시작 (마지막 COMMIT 상태)

 

순서 명령 잔액
1 UPDATE 잔액 = 900 900
2 SAVEPOINT S1 900
3 UPDATE 잔액 = 800 800
4 SAVEPOINT S2 800
5 UPDATE 잔액 = 700 700
6 ROLLBACK TO S1 900
7 COMMIT 900 확정

 

ROLLBACK TO S1을 하면 S1 이후에 만든 S2도 함께 사라져

61 · 62회 출제 포인트 : SAVEPOINT · ROLLBACK 순서를 따라가 최종 값 구하기

 

4. 자동 커밋과 암묵적 커밋

DBMS 특징
Oracle DML은 COMMIT해야 확정. DDL(CREATE · ALTER · DROP · TRUNCATE) 실행 시 앞의 작업까지 자동 COMMIT
SQL Server 기본이 AUTO COMMIT (문장마다 자동 확정). BEGIN TRANSACTION으로 명시적 트랜잭션 시작

 

예) Oracle에서 INSERT → CREATE TABLE → ROLLBACK 하면, CREATE TABLE 때 COMMIT이 일어나서 INSERT한 행은 남아 있어

정상 종료 시 Oracle은 COMMIT, 비정상 종료 시 ROLLBACK 처리돼

 

5. 같은 이름의 SAVEPOINT

순서 명령 잔액
1 UPDATE 잔액 = 900 900
2 SAVEPOINT A 900
3 UPDATE 잔액 = 800 800
4 SAVEPOINT A (같은 이름) 800
5 UPDATE 잔액 = 700 700
6 ROLLBACK TO A 800 (가장 마지막 A로)

 

[ 최근 기출 출제 포인트 ]

 

회차 출제 포인트
61회 SAVEPOINT · ROLLBACK TO 최종 결과
62회 DDL 자동 커밋, SQL Server AUTO COMMIT

 

[ 자주 묻는 질문 ]

Q. ROLLBACK TO 후에 트랜잭션이 끝나?

A. 아니야! 저장점 이후만 취소되고 트랜잭션은 계속돼. 끝내려면 COMMIT이나 ROLLBACK을 해야 해

 

Q. TRUNCATE는 왜 ROLLBACK이 안 돼?

A. Oracle에서 TRUNCATE는 DDL이라 실행하는 순간 자동 COMMIT되기 때문이야

 

[ 시험 포인트 정리 ]

 

키워드 핵심
COMMIT 영구 반영, 잠금 해제
ROLLBACK 마지막 COMMIT 시점으로
ROLLBACK TO 저장점 이후만 취소
같은 이름 SAVEPOINT 마지막 것으로 이동
Oracle DDL 자동 COMMIT
SQL Server 기본 AUTO COMMIT

 

[ 기출변형문제 ]

※ 60~62회 출제 포인트와 출제기준을 바탕으로 새로 만든 변형문제야

(잔액 1000이 COMMIT된 상태에서 시작, Oracle 기준)

 

Q1. UPDATE 잔액=900 → SAVEPOINT S1 → UPDATE 잔액=800 → SAVEPOINT S2 → UPDATE 잔액=700 → ROLLBACK TO S1 → COMMIT 후 잔액은?

① 1000

② 900

③ 800

④ 700

 

Q2. UPDATE 잔액=900 → SAVEPOINT S1 → UPDATE 잔액=800 → ROLLBACK 후 잔액은?

① 1000

② 900

③ 800

④ 오류 발생

 

Q3. INSERT로 1행 입력 → CREATE TABLE 실행 → ROLLBACK 했을 때 입력한 행은?

① 삭제됨

② 오류 발생

③ 남아 있음

④ 일부만 남음

 

Q4. UPDATE 잔액=900 → SAVEPOINT A → UPDATE 잔액=800 → SAVEPOINT A → UPDATE 잔액=700 → ROLLBACK TO A 후 잔액은?

① 900

② 700

③ 1000

④ 800

 

Q5. 다음 중 TCL이 아닌 것은?

① GRANT

② COMMIT

③ ROLLBACK

④ SAVEPOINT

 


[ 정답 & 해설 ]

 

문항 정답 및 해설
Q1 ② S1 시점(900)으로 돌아간 뒤 COMMIT (61회 출제 포인트)
Q2 ① 저장점 지정 없는 ROLLBACK은 마지막 COMMIT 상태 1000으로
Q3 ③ CREATE TABLE(DDL) 실행 때 자동 COMMIT돼서 남아 있음 (62회 출제 포인트)
Q4 ④ 같은 이름이면 마지막 SAVEPOINT A(800)로 돌아감
Q5 ① GRANT는 DCL

 

다음 글에서는 테이블 구조를 만드는

[이론 45] DDL

▶ [이론 45] DDL 보러가기

을 CREATE · ALTER · DROP · TRUNCATE로 정리해볼게!

 

▶ SQLD 기초이론 전체 글 보러가기

▶ SQLD · AI 자격증 스터디 자료 보러가기 (AI DATA 자격증 스터디 클럽)

 

SQLD 준비하시는 분들 모두 화이팅입니다~~~~~ ^^

반응형