dongdorodongdong
SQL-TCL 본문
트랜잭션
- 정의
- 데이터베이스의 논리적 연산단위
- 분할할 수 없는 최소의 단위
- 따라서 All or Nothing (Atomicity 특성) - 특징
- 하나의 트랜잭션에는 하나 이상의 SQL 문장이 포함 - 특성
- Atomicity : 모두반영 or 반영x
- Consistency : 시스템의 고정요소는 트랜잭션 수행 전과 후의 상태가 같아야 함
- Isolation : 트랜잭션은 완료될 때까지 다른 트랜잭션이 참조X
- Durability : 트랜잭션의 결과는 영구 반영
TCL (Transaction Control Language)
- COMMIT
- ROLLBACK
- SAVEPOINT
COMMIT
- COMMIT 이전의 데이터상태
- 메모리 버퍼에만 영향
- 변경 이전 상태로 복구 가능
- SELECT문으로 변경 결과를 확인할 수 있음
- 다른 사용자는 수행 결과를 볼 수 없음
- 변경된 행은 LOCKING이 설정되어 다른 사용자가 변경X - COMMIT 이후의 데이터상태
- DB에 반영
- 이전 데이터는 영원히 사라짐
- LOCKING이 풀림 - SQL Server의 COMMIT
- 기본적으로 Auto Commit 모드
- DML 구문이 성공이면 자동 COMMIT
- 오류가 발생할 경우 자동 ROLLBACK
ROLLBACK
- ROLLBACK 이후의 데이터상태
- 데이터 변경 사항 취소
- 이전 데이터 재저장
- 관련된 행의 LOCKING이 풀림
SAVEPOINT
- 정의
- 저장점을 정의하면 롤백할 때 전체 롤백이 아닌 일부만 롤백할 수 있다. - 특징
- 복수의 저장점을 정의할 수 있다.
- 동일 이름으로 저장점을 저장시 나중에 정의한 저장점이 유효 - 코드
Oracle
- SAVEPOINT P1;
ROLLBACK TO P1;
SQL Server
- SAVE TRANSACTION P1;
ROLLBACK TRANSACTION P1;