트랜잭션
하나 이상의 데이터베이스 연산이 묶여서 하나의 논리적인 작업 단위로 처리되는 것
트랜잭션 특징 (ACID)
- 원자성(Atomicity): 트랜잭션은 일련의 연산 중 하나라도 실패하면 전체 연산이 취소
-> 가장 중요!!!
- 일관성(Consistency): 트랜잭션이 완료되면 데이터베이스의 일관성이 유지
- 격리성(Isolation): 여러 개의 트랜잭션이 동시에 수행될 때 각각의 트랜잭션이 서로에게 영향 X
- 지속성(Durability): 트랜잭션이 완료되면 그 결과가 영구적으로 반영
TCL(Transaction Control Language)
트랜잭션의 처리를 위한 명령어들의 집합
TCL 명령어
- COMMIT: 현재까지 수행한 트랜잭션의 결과를 데이터베이스에 저장
COMMIT 명령어를 실행하면 트랜잭션이 종료되고, 데이터베이스의 일관성이 유지됨
- ROLLBACK: 현재까지 수행한 트랜잭션의 결과를 취소하고, 트랜잭션을 초기 상태로 되돌린다. ROLLBACK 명령어를 실행하면 트랜잭션이 종료되고, 데이터베이스의 일관성이 유지됨
-> 마지막으로 COMMIT했던 때로 돌아간다.
- SAVEPOINT: 현재 트랜잭션 내에서 중간에 SAVEPOINT를 설정하여, 해당 지점까지의 작업을 롤백할 수 있도록 한다. SAVEPOINT를 설정하면 ROLLBACK TO SAVEPOINT를 사용하여 해당 지점까지의 작업을 취소할 수 있다.
- ROLLBACK TO SAVEPOINT: SAVEPOINT 지점까지 수행한 작업을 취소하고, SAVEPOINT 이후의 작업은 유지한다.
- 오라클은 DDL 수행시 자동 커밋, SQL Server는 자동커밋 x
DELETE FROM 과 TRUNCATE TABLE의 차이
- DELETE FROM는 ROLLBACK으로 복구 가능
- TRUNCATE TABLE은 ROLLBACK으로 복구 불가능