TCL (Transaction Control Language)
- 트랜잭션 제어어 - COMMIT, ROLLBACK
- DML에 의해 조작된 결과를 작업 단위 (트랜잭션) 별로 제어하는 명령어
- DML 수행 후 트랜잭션을 정상 종료하지 않는 경우 LOCK 발생할 수 있음
잠금 (LOCK)
트랜잭션이 수행하는 동안 특정 데이터에 대해서 다른 트랜잭션이 동시에 접근하지 못하도록 제한
잠금이 걸린 데이터는 잠금을 실행한 트랜잭션 만이 접근 및 해제 가능 (관리자 권한 제외)
트랜잭션
- 데이터베이스의 논리적 연산 단위 (하나의 연속적인 업무 단위)
- 하나의 트랜잭션에는 하나 이상의 SQL 문장이 포함
- 분할할 수 없는 최소의 단위
- ALL OR NOTHING 개념 (모두 COMMIT 하거나 ROLLBACK 처리)
트랜잭션의 특성
- 원자성 (Atomicity) : 트랜잭션 정의된 연산들 모두 성공적으로 실행되거나 전혀 실행되지 않은 상태로 남아 있어야 함
- 일관성 (Consistency) : 트랜잭션 실행 전 데이터베이스 내용이 잘못되어 있지 않다면 트랜잭션 실행 이후에도 데이터베이스 내용의 잘못이 있으면 안됨
- 고립성 (Isolation) : 트랜잭션 실행 도중 다른 트랜잭션의 영향을 받아 잘못된 결과를 만들어서는 안됨
- 지속성 (Durability) : 트랜잭션이 성공적으로 수행되면 갱신한 데이터베이스 내용이 영구적으로 저장
COMMIT
- 입력, 수정, 삭제한 데이터에 이상이 없을 경우 데이터를 저장하는 명령어
- 한 번 COMMIT을 수행하면 COMMIT 이전에 수행된 DML은 모두 저장되며, 되돌릴 수 업슴
- ORACLE은 DDL 시 AUTO COMMIT (23c 버전부터 비활성화 가능)이지만 SQL Server는 AUTO COMMIT 비활성화 설정 가능
ROLLBACK
- 테이블 내 입력한 데이터나 수정한 데이터, 삭제한 데이터에 대해 변경을 취소하는 명령어
- 데이터베이스에 저장되지 않고 최종 COMMIT 지점 / 변경 전 / 특정 SAVEPOINT 지점으로 원복됨
- 최종 COMMIT 시점 이전까지 ROLLBACK 가능
- SAVEPOINT를 설정하여 최종 COMMIT 시점이 아닌, 그 후의 원하는 시점으로의 원복 가능
SAVEPOINT
트랜잭션 내에서 롤백을 부분적으로 수행하기 위해 사용되는 지점을 지정하는 데 사용
사용자가 원하는 위치에 원하는 이름으로 설정 가능
ROLLBACK TO savepoint_name으로 원하는 지점으로 원복 가능
(단, COMMIT 이전으로는 원복 불가)
** 문법
예) COMMIT과 ROLLBACK 후 최종 데이터 상태
원본 테이블 데이터)
여러 DML 수행)
결과)
'sqld' 카테고리의 다른 글
2-20) DCL (0) | 2024.08.23 |
---|---|
2-19) DDL (0) | 2024.08.23 |
2-17) DML (0) | 2024.08.23 |
2-16) 정규 표현식 (0) | 2024.08.22 |
2-15) PIVOT과 UNPIVOT (0) | 2024.08.22 |