TCL(Transaction Control Language) 은 트랜잭션(하나로 묶인 작업 단위)을 확정(COMMIT) 하거나 취소(ROLLBACK) 하고, 중간 저장점(SAVEPOINT) 으로 부분 취소하는 명령입니다. 시험은 "이 시점에 ROLLBACK하면 무엇이 남는가"를 묻습니다. (트랜잭션·ACID 개념은 트랜잭션 단원 참고.)
이 단원, 시험에서 어디에 나오나 (출제 비중)
- 제2과목 「SQL 기본 및 활용」 = 40문항 · 80점. TCL은 트랜잭션 결과 판별 유형으로 출제됩니다.
- ROLLBACK TO의 취소 범위와 DDL 자동 커밋이 오답을 가르는 포인트입니다. (단원별 문항수는 공개되지 않습니다 — 출처: KDATA 출제기준.)
출제 포인트 — 시험이 실제로 묻는 것
COMMIT(확정) ·ROLLBACK(전체 취소) ·SAVEPOINT+ROLLBACK TO(부분 취소)ROLLBACK TO 저장점= 그 지점 "이후"만 취소 — 저장점과 그 이전은 유지- COMMIT 후에는 되돌릴 수 없다 (지속성)
- 트랜잭션 도중 DDL 실행 = 앞선 DML까지 자동 커밋 (최다 함정)
① 네 명령의 동작
| 명령 | 동작 |
|---|---|
COMMIT | 지금까지 변경을 영구 확정 |
ROLLBACK | 마지막 COMMIT 이후 전부 취소 |
SAVEPOINT 이름 | 중간 저장점 설정 |
ROLLBACK TO 이름 | 그 저장점 이후만 취소 |
DML 변경은 COMMIT 전까지 다른 세션에서 보이지 않습니다(격리성). COMMIT해야 모두에게 확정됩니다.
② SAVEPOINT — 되감기의 범위 계산
그림 1. ROLLBACK TO는 저장점 이후만 취소한다. (자작 도식)
INSERT INTO 계좌 ...; -- 작업 A
SAVEPOINT s1;
UPDATE 계좌 SET ...; -- 작업 B
SAVEPOINT s2;
DELETE FROM 계좌 ...; -- 작업 C
ROLLBACK TO s1; -- B, C 취소 — A는 남는다
COMMIT; -- A만 확정
판별법:
ROLLBACK TO s1은 s1 이후만 되감습니다. "s1 이전까지 다 취소"로 읽으면 반대로 틀립니다. 전체 취소는 그냥ROLLBACK.
③ COMMIT 후 복구 불가 — 지속성
ROLLBACK이 되돌리는 범위는 마지막 COMMIT 이후뿐입니다. 이미 COMMIT된 변경은 영구 확정(지속성)이라 "실수로 COMMIT → ROLLBACK으로 복구"는 불가능합니다.
④ DDL 자동 커밋 — 앞선 DML까지 확정된다
DELETE FROM 주문; -- DML (아직 취소 가능)
CREATE INDEX idx ON ...; -- DDL → 자동 커밋! DELETE까지 확정
ROLLBACK; -- 아무것도 안 돌아온다
트랜잭션 도중 CREATE·ALTER·DROP·TRUNCATE 같은 DDL을 실행하면 그 앞의 DML까지 자동 COMMIT됩니다. 이후 ROLLBACK해도 돌아오지 않습니다 — DML 단원의 "TRUNCATE 복구 불가"와 같은 원리입니다.
한 장 정리 (암기 카드)
COMMIT확정 ·ROLLBACK전체 취소 ·SAVEPOINT+ROLLBACK TO부분 취소.ROLLBACK TO= 저장점 "이후"만 취소. 저장점·그 이전은 유지.- COMMIT 후 복구 불가(지속성). COMMIT 전 변경은 다른 세션에 안 보임.
- DDL = 자동 커밋 — 앞선 DML까지 확정.
참고 출처
- 시험 과목·배점: 한국데이터산업진흥원(KDATA) 데이터자격검정 (2026년 7월 확인)
- TCL 동작은 표준 SQL·오라클 SQL에 근거하며, 본문 예시·도식·설명은 자작입니다.