Part 8. TCL

Hyunsu·2023년 3월 15일
0

국비 교육

목록 보기
33/36
post-thumbnail

📝 목차

  1. COMMIT
  2. ROLLBACK
  3. SAVEPOINT

TCL 은 트랜잭션 제어 언어로 DML 과 관련이 있다.
트랜잭션이란 데이터베이스의 논리적 연산 단위로 데이터 변경 사항을 묶어 하나의 트랜잭션에 담아 처리한다.


1. COMMIT

트랜잭션 종료 후 저장하는 역할로 트랜잭션에 임시 저장된 데이터 변경 사항을 DB 에 반영한다.

-- 경리부 삽입 (아직 DB에 실제로 삽입되지 않음)
INSERT INTO DEPARTMENT2 VALUES('D0', '경리부', 'L2');

-- 마지막 커밋 상태로 되돌아감 (트랜잭션 내용 모두 지움)
ROLLBACK;

-- ROLLBACK 확인
SELECT * FROM DEPARTMENT2;

-- 다시 경리부 INSERT
INSERT INTO DEPARTMENT2 VALUES('D0', '경리부', 'L2');

-- 트랜잭션에 저장된 DML을 DB에 반영
COMMIT;

2. ROLLBACK

트랜잭션 취소 역할로 트랜잭션에 임시 저장된 데이터 변경 사항을 삭제하고 마지막 COMMIT 상태로 돌아간다.

-- 이미 앞서서 COMMIT 수행 (돌아갈 내용이 없음)
ROLLBACK;

-- 경리부 남아있음
SELECT * FROM DEPARTMENT2;

3. SAVEPOINT

임시 저장하는 역할로 트랜잭션에 저장 지점을 정의하여 ROLLBACK 수행 시 전체 작업을 삭제하는 것이 아닌 저장 지점까지만 일부를 ROLLBACK 한다.

-- DELETE 내역이 트랜잭션에 저장
DELETE FROM DEPARTMENT2 WHERE DEPT_ID = 'D1';

-- D1 삭제 구문 수행 후 시점을 저장
SAVEPOINT S1;  

-- D2 삭제
DELETE FROM DEPARTMENT2 WHERE DEPT_ID = 'D2';
SELECT * FROM DEPARTMENT2;

-- D2 삭제 구문 수행 후 시점을 저장
SAVEPOINT S2;

-- D3 삭제
DELETE FROM DEPARTMENT2 WHERE DEPT_ID = 'D3';
SELECT * FROM DEPARTMENT2;

-- S2 까지만 ROLLBACK
ROLLBACK TO S2;
SELECT * FROM DEPARTMENT2;

-- S1 까지만 ROLLBACK
ROLLBACK TO S1;
SELECT * FROM DEPARTMENT2;

-- 트랜잭션의 모든 내용 삭제
ROLLBACK;
SELECT * FROM DEPARTMENT2;
profile
현수의 개발 저장소

0개의 댓글