TCL이란 DML에 의해 조작된 결과를 작업단위(트랜잭션)별로 제어하는 기능
1.데이터 베이스의 논리적 연산단위
2.하나의 트랜잭션에는 하나 이상의 SQL문장이 포함된다.
3.밀접히 관련되어 분리될 수 없는 한 개 이상의 DB조작
4.그렇기 때문에 전부 적용하거나 전부 취소(ALL or NOTHING)
특성 | 설명 |
---|---|
원자성(atomicity) | 트랜잭션에서 정의된 연산들은 모두 성공적으로 실행되던지 아니면 전혀 실행되지 않은 상태로 남아 있어야 한다. (ALL or NOTHING) |
일관성(consistency) | 트랜잭션이 실행되기 전의 데이터베이스 내용이 잘못 되어 있지 않다면 트랜잭션이 실행된 이후에도 데이터베이스의 내용에 잘못이 있으면 안된다. |
고립성(isolation) | 트랜잭션이 실행되는 도중에 다른 트랜잭션의 영향을 받아 잘못된 결과를 만들어서는 안된다. |
지속성(durability) | 트랜잭션이 성공적으로 수행되면 그 트랜잭션이 갱신한 데이터 베이스의 내용은 영구적으로 저장된다. |
트랜잭션 완료상태일 때 사용
올바르게 반영된 데이터를 DB에 반영
트랜잭션 시작 이전의 상태로 되돌림
COMMIT 되지 않은 모든 트랜잭션을 롤백함.
- 단지 메모리 BUFFER에만 영향을 받았기 때문에 데이터 변경 이전 상태로 복구가능
- 현재 사용자는 SELECT 문장으로 결과 확인 가능
- 다른 사용자는 현재 사용자가 수행한 명령의 결과를 볼 수 없음
- 변경된 행은 잠금(Locking)이 설정되어 다른사용자가 변경불가
- 데이터에 대한 변경 사항이 DB에 반영
- 이전 데이터는 영원히 손실
- 모든 사용자는 결과를 볼 수 있음
- 관련된 행에 잠금(Locking)이 풀리고, 다른 사용자들이 행을 조작할 수 있음.
SAVEPOINT SVPT1;
ROLLBACK TO SVPT1;
COMMIT;