TCL(트랜잭션 제어)
f
firststep 에디터
IT / 자격증 전문 라이터
2026년 2월 27일969
TCL(트랜잭션 제어)
1) 트랜잭션(Transaction) 한 줄 정의
여러 개의 SQL 작업을 하나의 ‘묶음 작업’으로 처리하는 단위입니다.
이 묶음은 마지막에 COMMIT하면 확정되고, ROLLBACK하면 취소됩니다.
2) ACID 특성(이미지 표 핵심)
트랜잭션이 안전하게 동작하려면 아래 성질을 만족해야 합니다.
- A(Atomicity, 원자성): 전부 성공하거나 전부 실패(부분만 반영 X)
- C(Consistency, 일관성): 규칙(제약조건 등)을 깨지 않게 유지
- I(Isolation, 고립성): 동시에 실행돼도 서로 영향 최소화
- D(Durability, 지속성): COMMIT된 결과는 장애가 나도 유지
3) COMMIT: “지금까지 변경을 확정 저장”
의미
- COMMIT을 하면 그 트랜잭션이 종료되고,
- 지금까지 한 INSERT/UPDATE/DELETE 결과가 영구 반영됩니다.
- COMMIT 이후에는 그 변경을 ROLLBACK으로 되돌리기 어렵습니다.
예시(이미지 흐름)
- 특정 직원 삭제(DELETE)
- 신규 직원 추가(INSERT)
- 급여 인상(UPDATE)
- 부서 변경(UPDATE)
- COMMIT → 위 변경들이 전부 “확정”
-- 여러 DML 수행
DELETE FROM emp WHERE ename IN ('YONGMOON', 'YONGMOON2');
INSERT INTO emp (...) VALUES (...);
UPDATE emp SET sal = sal * 1.1 WHERE empno = 7935;
UPDATE emp SET deptno = 30 WHERE empno = 7902;
-- 확정
COMMIT;
4) ROLLBACK: “COMMIT 이전 상태로 되돌리기”
의미
- 트랜잭션 내에서 변경한 내용을 전부 취소하고,
- 마지막 COMMIT 시점(또는 트랜잭션 시작 시점)으로 돌아갑니다.
- 즉, “방금 한 실수는 없던 일”로 만듭니다.
예시(이미지)
- 7935 직원 급여 40% 인상, 부서 30 변경까지 했는데
- 뭔가 잘못돼서 ROLLBACK → 인상/부서변경이 전부 취소되고 원래 값으로 복구
UPDATE emp SET sal = sal * 1.4 WHERE empno = 7935;
UPDATE emp SET deptno = 30 WHERE empno = 7935;
ROLLBACK; -- 전부 취소
중요한 주의: Auto-commit
이미지에 나온 포인트:
- 툴(DBA 도구) 설정이 Auto-commit이면, DML마다 자동으로 COMMIT되어
ROLLBACK이 먹히지 않을 수 있습니다. - 실습할 때는 Auto-commit 설정을 확인하는 습관이 필요합니다.
5) SAVEPOINT: “중간 체크포인트 찍기”
의미
- 트랜잭션 도중에 “여기까지는 괜찮다”라는 저장 지점을 찍습니다.
- 그 다음 문제가 생기면 전체 ROLLBACK이 아니라, 특정 SAVEPOINT까지만 되돌릴 수 있습니다.
핵심 문법
- 저장: SAVEPOINT sp1;
- 부분 취소: ROLLBACK TO sp1;
예시(이미지 시나리오 그대로)
- 트랜잭션 시작(개념상 BEGIN)
- 8001 삽입
- SAVEPOINT sp1
- 8002 삽입
- SAVEPOINT sp2
- 8003 삽입(여기서 문제 발생)
- ROLLBACK TO sp2 → 8003만 취소, 8001/8002는 유지
- COMMIT → 남은 것(8001, 8002)을 확정
-- (개념상 트랜잭션 시작)
INSERT INTO emp (...) VALUES (8001, ...);
SAVEPOINT sp1;
INSERT INTO emp (...) VALUES (8002, ...);
SAVEPOINT sp2;
INSERT INTO emp (...) VALUES (8003, ...); -- 문제 발생했다고 가정
ROLLBACK TO sp2; -- 8003만 취소
COMMIT; -- 8001, 8002 확정
한 줄 정리(시험용)
- COMMIT: 변경 확정(되돌리기 어려움)
- ROLLBACK: 변경 전체 취소(마지막 COMMIT 이전으로)
- SAVEPOINT: 중간 지점 저장 → ROLLBACK TO로 부분 취소
f
firststep 에디터 · IT / 자격증 전문 라이터
firststep.kr의 실무 에디터로서 무언가를 처음 도전하는 분들이 헤매지 않도록 검증된 지식과 실습 가이드를 작성합니다.
댓글 0개
댓글을 작성하려면 로그인이 필요합니다
간단한 이메일과 비밀번호로 3초 만에 가입하고 의견을 남겨보세요.
첫 번째 댓글을 남겨보세요!