목차
- TCL
1-1. COMMIT
1-2. ROLLBACK
1-3. SAVEPOINT
1. TCL
- TCL(Transaction Control Language)은 트랜잭션 제어 언어이다.
- COMMIT과 ROLLBACK이 있다.
❗ 트랜잭션(transaction)
한꺼번에 수행되어야 할 최소 작업 단위를 말한다. 논리적 작업 단위(Logical Unit of Work, LUW)로 불리기도 한다. 즉 논리적으로 한 번에 수행되어야 할 작업 단위인 것이다.
하나의 트랜잭션으로 이루어진 작업은 반드시 한꺼번에 완료(COMMIT)되어야 하고, 그렇지 않은 경우에는 한꺼번에 취소(ROLLBACK)되어야 한다.
- 데이터 조작 언어인 DML(Data Manipulation Language)의 INSERT-UPDATE-DELETE 구문들은 항상 트랜잭션 단위로 수행된다.
1-1. COMMIT
✅ COMMIT;
- 트랜잭션 작업이 정상 완료되면 변경 내용을 영구히 저장한다.
1-2. ROLLBACK
✅ ROLLBACK;
- 트랜잭션 작업을 취소하고, 최근 COMMIT한 시점으로 이동한다.
✅ ROLLBACK TO 세이브포인트명;
- 트랜잭션 작업을 취소하고, SAVAPOINT 시점으로 이동한다.
1-3. SAVEPOINT
✅ SAVEPOINT 세이브포인트명;
- 현재 트랜잭션 작업에 이름을 지정한다. 즉 하나의 트랜잭션 안에 구역을 나누는 것이다.
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'
);
INSERT
INTO TBL_USER A
(
A.USERNO
, A.ID
, A.PASSWORD
)
VALUES
(
3
, 'test3'
, 'pass3'
);
COMMIT;
SELECT
UT.*
FROM TBL_USER UT;
INSERT
INTO TBL_USER A
(
A.USERNO
, A.ID
, A.PASSWORD
)
VALUES
(
4
, 'test4'
, 'pass4'
);
SELECT
UT.*
FROM TBL_USER UT; --4번 등록 완료
ROLLBACK;
SELECT
UT.*
FROM TBL_USER UT; --3번까지 조회
INSERT
INTO TBL_USER A
(
A.USERNO
, A.ID
, A.PASSWORD
)
VALUES
(
4
, 'test4'
, 'pass4'
);
SAVEPOINT SP1;
INSERT
INTO TBL_USER A
(
A.USERNO
, A.ID
, A.PASSWORD
)
VALUES
(
5
, 'test5'
, 'pass5'
);
SELECT
UT.*
FROM TBL_USER UT;
ROLLBACK TO SP1;
SELECT
UT.*
FROM TBL_USER UT; -- SP1 시점으로 이동, 4개
ROLLBACK;
SELECT
UT.*
FROM TBL_USER UT; -- 최근 COMMIT 시점으로 이동, 3개
'Database' 카테고리의 다른 글
[Oracle/수업 과제 practice] DDL(1~9번 문항) (0) | 2022.01.26 |
---|---|
[Oracle/SQL] 9. DDL | ALTER | DROP (0) | 2022.01.25 |
[Oracle/SQL] 7. DML | INSERT | UPDATE | DELETE | MERGE (0) | 2022.01.25 |
[Oracle/SQL] 6. DDL | CREATE TABLE | COMMENT | CONSTRAINT (0) | 2022.01.24 |
[Oracle/수업 과제 practice] SELECT(Additional - Option) (0) | 2022.01.23 |