06. TCL
TCL(Transaction Control Language)
- COMMIT , ROLLBACK, SAVEPOINT
- 데이터 변경 사항을 묶어 하나의 트랜잭션에 담아 처리한다
- 대상이되는 데이터 변경 사항 : INSERT, UPDATE, DELETE + MERGE
1
2
3
INSERT 수행 ➡️ DB 반영(x)
INSERT 수행 ➡️ 트랜잭션에 추가 ➡️ COMMIT ➡️ DB 반영(o)
INSERT 10번 수행 ➡️ 1개의 트랜잭션에 10개 추가 ➡️ ROLLBACK ➡️ DB 반영(x)
1) COMMIT
- 메모리 버퍼(트랜잭션)에 임시 저장된 데이터 변경 사항을 DB에 반영
1
2
3
4
5
INSERT INTO DEPARTMENT VALUE ('T1', '개발1팀', 'L2');
-- DB에 반영된 상태가 아니다
COMMIT;
-- DB에 반영
2) ROLLBACK
- 메모리 버퍼(트랜잭션)에 임시 저장된 데이터 변경 사항을 삭제하고, 마지막 COMMIT 상태(시점)으로 돌아간다. DB 반영(x)
1
2
3
4
5
INSERT INTO DEPARTMENT VALUE ('T1', '개발1팀', 'L2');
-- DB에 반영된 상태가 아니다
ROLLBACK;
-- 임시 데이터 삭제
3) SAVEPOINT
- 메모리 버퍼(트랜잭션)에 저장 지점을 정의하여 ROLLBACK 수행 시 전체 작업을 삭제하는 것이 아닌 저장 지점까지 일부 ROLLBACK 한다
1
2
3
4
5
6
7
8
9
10
11
12
13
INSERT INTO DEPARTMENT VALUE ('T1', '개발1팀', 'L2');
SAVEPOINT SP1;
INSERT INTO DEPARTMENT VALUE ('T2', '개발2팀', 'L3');
SAVEPOINT SP2;
INSERT INTO DEPARTMENT VALUE ('T3', '개발3팀', 'L3');
SAVEPOINT SP3;
ROLLBACK TO SP1;
-- 임시 저장 데이터인 'T1', '개발1팀', 'L2' 이 값은 아직 유지
-- 과거 시점에서 미래 시점으로는 ROLLBACK 불가
-- EX) SP1으로 간 후 SP3로 돌아가지 못함