TCL (Transaction Control Language): 트랜젝션 제어 언어
트랜젝션(Transaction)이란?
- 데이터 처리의 한 단위
- 오라클에서 발생하는 여러 개의 SQL 명령문들을 하나의 논리적인 작업 단위로 처리하는데 이를 트랜젝션이라고 한다.
- 트랜젝션은 ALL or Nothing 방식으로 처리된다. 여러 개의 명령어의 집합이 정상적으로 처리되면 정상 종료하고, 여러 개의 명령어 중에서 하나의 명령어라도 잘못되었다면 전체를 취소한다.
트랜젝션 제어를 위한 명령어
명령어 | 내용 |
COMMIT | 저장되지 않은 모든 변경사항을 데이터베이스에 저장 |
ROLLBACK | 저장되지 않은 모든 변경사항을 취소 |
SAVEPOINT | 현재까지의 트랜젝션을 savepoint로 지정 표준 SQL은 아님. 오라클에만 존재 |

트랜잭션 내의 DML 명령문들은 실행되어 SELECT ~ FROM 결과에 반영되더라도
커밋(COMMIT) 전까지는 임시적인 상태이다.
따라서, 이 상태에서는 ROLLBACK을 할 경우 트랜젝션이 취소되고 이전 커밋 직후의 상태로 돌아가게 된다.
SAVEPOINT 사용
1. 저장점 설정
SAVEPOINT 저장점이름;
2. SAVEPOINT로 롤백
ROLLBACK TO SAVEPOINT 저장점이름;
예시
UPDATE emp2 SET ename = 'CHARSE' WHERE empno = 7788;
UPDATE emp2 SET deptno = 30 WHERE empno = 7788;
--저장점 설정
SAVEPOINT POINT1;
UPDATE emp2 SET job='MANAGER'; --실수로 모든 직원의 업무를 manager로 변경함
--ROLLBACK; --=> 이전 작업 모두 취소된다.
ROLLBACK TO SAVEPOINT POINT1; --=> POINT1 저장점까지만 취소됨 (맨 위 코드 2개는 살아 있음)
COMMIT; --확정