9.1 TRANSACTION의 개념
- Transaction이란 논리적인 업무의 작업단위를 의미
- Transaction Control LANGUAGE
- SAVEPOINT
- COMMIT
- ROLLBACK [ TO SAVEPOINT명 ]
- Transaction은 다음의 사건들로 구성
- 데이터에 영구적인 변경을 하는 DML명령어
- 하나의 DDL명령
- 하나의 DCL명령
- 최초의 실행가능한 SQL명령으로 시작해서 다음 사건 중 하나로 종료됨
- COMMIT이나 ROLLBACK
- DDL이나 DCL 명령 실행( automatic commit )
- deadlock 등의 error, system crash, exit
9.2 TRANSACTION CONTROL

명시적인( Explicit ) 트랜잭션 제어 명령어
| 명령어 | 설 명 |
| COMMIT | 아직 저장되지 않은 모든 데이터 변경 사항을 데이터베이스에 저장하고 현재의 트랜잭션을 종료 |
| SAVEPOINT 이름 | 현재의 트랜잭션에 savepoint를 지정 |
| ROLLBACK [ TO SAVEPOINT 이름 ] |
아직 저장되지 않은 모든 데이터 변경 사항을 취소하고 현재의 트랜잭션을 종료 |
암시적인( Implicit ) 트랜잭션 제어 명령어
| 상 태 | 환 경 |
| 자동 COMMIT | DDL 명령이나 DCL 명령 실행 |
| COMMIT이나 ROLLBACK을 명시적으로 실행되지 않고 SQL*Plus를 정상적으로 종료 |
|
| ROLLBACK [ TO SAVEPOINT 이름 ] |
SQL*Plus의 비정상적 종료나 시스템 실패 |
9.3 COMMIT, ROLLBACK 이전의 데이터 상태
- 단지 buffer에만 영향을 받았기 때문에 데이터의 이전 상태는 복구될 수 있다.
- 현재 사용자는 SELECT문으로 작업의 결과를 확인할 수 있다
- 다른 사용자는 현재 사용자가 수행한 작업의 결과를 볼 수 없다
- 변경된 행은 Lock이 설정되어서 다른 USER가 변경될 수 없다
COMMIT후의 데이터 상태
- 데이터에 대한 변경사항( After Image )은 데이터베이스에 반영된다
- 이전 데이터는 영원히 잃어버리게 된다
- 모든 사용자는 결과를 볼 수 있다
- 관련된 행에 대한 Lock을 풀리고, 다른 사용자들이 행을 조작할 수 있게 된다
ROLLBACK후의 데이터 상태
- 데이터에 대한 변경사항은 취소된다
- 이전 데이터( Before Image )는 다시 재저장된다
- 관련된 행에 대한 Lock을 풀리고, 다른 사용자들이 행을 조작할 수 있게 된다
9.4 SAVEPOINT를 이용한 ROLLBACK
- SAVEPOINT명령어로 현재의 트랜잭션 중의 위치를 지정할 수 있다
- ROLLBACK TO SAVEPOINT문을 써서 SAVEPOINT까지 ROLLBACK 할 수 있다
INSERT ...
SAVEPOINT in_done;
Savepoint created.
UPDATE ...
ROLLBACK TO in_done;
Rollback complete.'SQL > 기초' 카테고리의 다른 글
| SQL 정리 11일차 데이터 정의어(DDL) (0) | 2023.09.01 |
|---|---|
| SQL 정리 10일차 DICTIONARY (0) | 2023.08.30 |
| SQL 정리 8일차 CONSTRAINT (0) | 2023.08.27 |
| SQL 정리 7일차 SubQUERY (0) | 2023.08.25 |
| SQL 정리 6일차 JOIN (0) | 2023.08.16 |