Backend/Oracle

[DB] TCL(TRANSGACTION CONTROL LANGUAGE)

Deeb 2021. 9. 27. 21:47
더보기

목차

1. COMMIT

2. ROLLBACK

3. SAVEPOINT

✍TCL(TRANSGACTION CONTROL LANGUAGE)

Transgaction :  데이터베이스의 논리적 연산 단위 
TCL : 트랜잭션 제어 언어

데이터의 변경 사항을 묶어 하나의 트랜잭션에 담아 처리한다. 

트랜잭션에 담겨지는 대상이 되는 SQL
: INSERT, UPDATE, DELETE (DML, 데이터 조작 언어)

 

SQL DEVELOPER에서 INSERT, UPDATE, DELETE 작성 시 바로 DB에 반영되는것이 아니라 메모리 임시버퍼에서 COMMIT 해야 DB에 반영된다.

 

COMMIT한 것을 없애고 싶을 때 : ROLLBACK

 

SVAPOINT S1을 중간 저장한다고 했을 때 ROLLBACK TO S1시 SAVEPOINT한 저장지점까지만 삭제할 수 있게 한다. 

 

COMMIT하면 다 저장되고 ROLLBACK하면 다 사라지니깐 논리적 연산 단위라고 한다.


🚩 COMMIT

: 메모리 버퍼에 임시 저장된 데이터 변경 사항(INSERT, UPDATE, DELETE)을 DB에 실제로 반영한다. 

예제

SELECT * FROM 테이블명;
COMMIT

현재 메모리 임시 버퍼(트랜잭션)를 DB에 반영


🚩  ROLLBACK

: 메모리 버퍼에 임시 저장된 데이터 변경 사항을 삭제하고 마지막 COMMIT 상태로 돌아가는 것이다. 

예제

SELECT * FROM 테이블명;
COMMIT; 
- 현재 메모리 임시 버퍼(트랜잭션)를 DB에 반영

DELETE FROM 테이블명
WHERE 컬럼명 = '데이터';
- 삭제 내용이 트랜잭션에 임시 저장

SELECT * FROM 테이블명;
- 위의 데이터 삭제 확인

ROLLBACK

트랜잭션 내용을 삭제하고 마지막 COMMIT 상태로 돌아간다. 

== DELETE 적용되기 전의 상태


🚩 SAVEPOINT

: 저장 지점을 정의하여 ROLLBACK 시 트랜잭션 전체의 내용을 삭제하는 것이 아닌
저장된 지점까지만 삭제할 수 있도록 하는 것이다. 
Rollback하는 시점을 제어 

예제

DELETE FROM 테이블명 WHERE 컬럼명= '데이터 1';

SAVEPOINT SP1;
-- 데이터 1이 삭제된 상태를 임시 저장

DELETE FROM 테이블명 WHERE 컬럼명= '데이터 2';
SELECT * FROM 테이블명;

ROLLBACK TO SP1;

데이터2만 복구 ==  SP1 지점까지만 롤백


🚩  TCL 주의사항

  • TCL 구문은 DML(INSERT, UPDATE, DELETE )에만 적용된다.
  • DML 구문 작성 중 DDL 또는 DCL 구문이 수행될 경우
    트랜잭션 내용이 바로 DB에 반영된다. (자동 COMMIT)
반응형