[Oracle DB] TCL (TRANSACTION CONTROL LANGUAGE)
![post-thumbnail](https://velog.velcdn.com/images/yh_bang/post/082c55e3-2ed1-492b-a872-604e6efee60c/image.png)
TCL (TRANSACTION CONTROL LANGUAGE)
1. TCL (TRANSACTION CONTROL LANGUAGE)
- TCL (TRANSACTION CONTROL LANGUAGE) : 트랜잭션 제어어
=> 트랜잭션에 저장된 SQL 명령을 실제 테이블에 적용하거나 테이블에 적용하지 않고 취소하는 명령
- 트랜잭션 (TRANSACTION) : 사용자 접속 환경(세션)에서 전달된 SQL 명령을 DBMS 서버에 저장하는 논리적인 작업단위
=> SQL 명령을 전달받아 DBMS 서버는 실제 테이블에 SQL 명령을 적용하지 않고 트랜잭션에 저장하여 검색시 사용
2. 트랜잭션
- 데이터 일관성 : DBMS 서버에 접속된 모든 사용자에게 동일한 검색결과 제공
- 데이터 무결성 : 테이블에 비정상적인 값을 저정하지 않아 정상적인 검색결과 제공
- 데이터 잠김 기능(LOCK)을 제공하기 위해 트랜잭션 사용
- 현재 세션에서 작업중인 테이블의 행을 다른 세션에서 작업하지 못하도록 트랜잭션을 사용하여 데이터 잠금 기능 제공
- 현재 세션에서 작업중인 테이블의 행을 다른 세션에서 조작할 경우 트랜잭션의 데이터 잠금 기능으로 인해 다른 세션이 일시적으로 중지
=> 현재 세션에서 작업중인 테이블의 행에 대한 트랜잭션의 명령을 COMMIT 또는 ROLLBACK 처리 해야만 다른 세션의 DML 명령이 실행 가능
3. COMMIT 처리
- 트랜잭션에 저장된 SQL 명령을 실제 테이블에 적용하기 위해서는 COMMIT 처리 (COMMIT 후 트랜잭션 초기화)
- 현재 세션에서 정상적으로 서버 접속을 종료한 경우 자동 COMMIT 처리
- DDL 명령 또는 DCL 명령을 작성하여 전달할 경우 자동 COMMIT 처리
- 서버에 전달하여 트랜잭션에 저장된 DML 명령은 COMMIT 명령을 사용하여 COMMIT 처리
4. ROLLBACK 처리
- 트랜잭션에 저장된 SQL 명령을 실제 테이블에 적용하지 않고 초기화하기 위해 ROLLBACK 처리
- 현재 세션에서 비정상적으로 서버 접속이 종료된 경우 자동 ROLLBACK 처리
- 서버에 전달하여 트랜잭션에 저장된 DML 명령은 ROLLBACK 명령을 사용하여 ROLLBACK 처리
5. SAVEPOINT
- SAVEPOINT : 트랜잭션에 라벨(위치정보)을 부여하는 명령
- 트랜잭션에 저장된 DML 명령을 라벨을 이용하여 원하는 위치의 DML 명령만 ROLLBACK 처리하기 위해 SAVEPOINT 사용
SAVEPOINT 라벨명
- SQVEPOINT 명령으로 설정된 라벨을 이용한 ROLLBACK 처리
ROLLBACK TO 라벨명