TCL (Transaction Control Language): 트랜젝션 제어 언어

트랜젝션(Transaction)이란?
  • 데이터 처리의 한 단위
  • 오라클에서 발생하는 여러 개의 SQL 명령문들을 하나의 논리적인 작업 단위로 처리하는데 이를 트랜젝션이라고 한다.
  • 트랜젝션은 ALL or Nothing 방식으로 처리된다. 여러 개의 명령어의 집합이 정상적으로 처리되면 정상 종료하고, 여러 개의 명령어 중에서 하나의 명령어라도 잘못되었다면 전체를 취소한다.

 

트랜젝션 제어를 위한 명령어
명령어 내용
COMMIT 저장되지 않은 모든 변경사항을 데이터베이스에 저장
ROLLBACK 저장되지 않은 모든 변경사항을 취소
SAVEPOINT 현재까지의 트랜젝션을 savepoint로 지정
표준 SQL은 아님. 오라클에만 존재

 

출처: https://blog.naver.com/regenesis90/222213840145

 

트랜잭션 내의 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; --확정

+ Recent posts