-
SQL - TCL (Transaction Control Language)DataBase/Oracle 2022. 1. 27. 21:05728x90반응형
TCL (Transaction Control Language) 란?
- 한꺼번에 수행되어야 할 최소의 작업 단위를 말한다.
- 하나의 트랜잭션으로 이루어진 작업은 반드시 한꺼번에 완료(COMMIT)되어야 하며
그렇지 않은 경우에는 한꺼번에 취소(ROLLBACK)되어야 한다. - DDL 경우 auto COMMIT이 된다.
- COMMIT : 트랜잭션 작업이 정상 완료되면 변경 내용을 영구히 저장
- ROLLBACK : 트랜잭션 작업을 취소하고 최근 COMMIT 한 시점으로 이동
- SAVEPOINT 세이브포인트 명 : 현재 트랜잭션 작업 시점에 이름을 정해줌
하나의 트랜잭션 안에 구역을 나눈다. - ROLLBACK TO 세이브포인트명 : 트랜잭션 작업을 취소하고 SAVEPOINT 시점으로 이동
COMMIT과 ROLLBACK
-- 테이블 생성 CREATE TABLE TBL_USER( USERNO NUMBER UNIQUE, ID VARCHAR2(20) PRIMARY KEY, PASSWORD CHAR(20) NOT NULL ); -- 데이터 삽입 INSERT INTO TBL_USER A ( A.USERNO, A.ID, A.PASSWORD) VALUES ( 1, 'test1', 'pass1'); -- 데이터 삽입 INSERT INTO TBL_USER A ( A.USERNO, A.ID, A.PASSWORD) VALUES ( 2, 'test2', 'pass2'); COMMIT;
TBL_USER 테이블에 2개 행을 삽입하여 COMMIT을 하였다. 그다음 다시 1개 행을 삽입하고 ROLLBACK 하면 어떻게 되는지 알아보자.
-- 데이터 삽입 INSERT INTO TBL_USER A ( A.USERNO, A.ID, A.PASSWORD) VALUES ( 3, 'test3', 'pass3'); ROLLBACK;
이와 같이 ROLLBACK을 하면 COMMIT 시점으로 되돌아 가는 것을 볼 수 있다.
SAVEPOINT와 ROLLBACK TO
INSERT INTO TBL_USER A ( A.USERNO, A.ID, A.PASSWORD) VALUES ( 3, 'test3', 'pass3'); SAVEPOINT SP1; INSERT INTO TBL_USER A ( A.USERNO, A.ID, A.PASSWORD) VALUES ( 4, 'test4', 'pass4');
2개의 행을 COMMIT한 시점에서 다음과 같이 [ 3, 'test3, 'pass3' ] 행을 삽입하고 SAVEPOINT SP1을 해주었다. 다시 [3, 'test3, 'pass3'] 행을 삽입하면 해당 테이블은 다음과 같이 데이터들이 저장된다.
이 상태에서 ROLLBACK TO SP1을 해주면 SAVEPOINT로 저장한 SP1 시점으로 다시 되돌아 가게된다. 물론 COMMIT을 하게 되면 다시 COMMIT시점으로 되돌아가게 된다.
728x90반응형'DataBase > Oracle' 카테고리의 다른 글
SQL - VIEW, VIEW 옵션 (0) 2022.01.28 SQL - DDL(Data Definition Language)의 ALTER, DROP (0) 2022.01.27 SQL - DML(Data Manupulation Language) DELETE, DDL(Data Definition Language) TRUNCATE (0) 2022.01.27 SQL - DML(Data Manipulation Language) INSERT, UPDATE, UPDATE시 주의사항 (0) 2022.01.27 SQL - 테이블 생성(CREATE) 및 제약 조건(Constraint) (0) 2022.01.26