Transaction
트랜잭션
한명의 사용자에 의해 수행된 하나 이상의 SQL 문장을 포함하는 업무의 논리적 단위.
4가지 속성
원자성(Atomicity) : All or Nothing. 전부 실행하든지 전혀 실행하지 않아야 한다.
일관성(Consistency) : 성공적인 실행시 상태는 모순되지 않고 일관된 상태여야 한다.
격리성(Isolation) : 연산 결과는 다른 트랜잭션에서 접근할 수 없다.
영속성(Durability) : 성공적으로 완료되면 그 결과는 영속적(되돌릴 수 없다.)
트랜잭션은 첫번째 실행가능한 SQL 문장과 함께 시작한다.
DDL, DCL : Automatic Commit, 각 문장 하나가 하나의 transaction
exit를 통한 보통 종료 : automatic commit
트랜잭션 제어 문장
COMMIT
현재 트랜잭션을 마치고 트랜잭션에서 수행된 모든 변화를 영원히 유지한다.
이 문장은 트랜잭션의 모든 세이브포인트를 지우고 트랜잭션 잠금(lock)을 해제한다.
ROLLBACK
현재 트랜잭션에서 마친 작업을 이전상태로 되돌린다.
이 문장은 트랜잭션에서 모든 세이브 포인트를 지우고 트랜잭션 잠금(lock)을 해제한다.
SAVEPOINT x
나중에 roll back할 수 있는 위치로 트랜잭션의 위치 x를 표시한다.
ROLLBACK TO x
특정 세이브 포인트 x로 현재 트랜잭션을 되돌린다.
트랜잭션 동안 데이터 상태
ROLLBACK과 COMMIT하기 전
- 영향을 받는 행은 잠겨있기 때문에 다른 사용자는 그 행은 변경할 수 없다.
- 모든 변화는 취소될 수 있다. (undo segment에 저장)
- 현재 사용자 세션은 DML 문장들의 결과를 볼 수 있다.
- 다른사용자와 같은 사용자의 다른 세션조차 현재 사용자 세션에 의해 만들어진 결과를 볼 수 없다.