TCL(Transaction Control Language)
✒️ 2025-05-28 17:05 내용 수정
수제비 2024 정보처리기사 필기 5판 1권의 내용 일부를 참고하여 정리
참고 자료 : Ju Hyun AN's DCL(Data Control Language,데이터 제어어), 코딩하는 포로리's DB 개요: DDL, DML, DCL, TCL이란?, Inpa dev's MYSQL 트랜잭션(Transaction) 개념 & 사용 완벽 정리, seung MySQL 트랜잭션(Transaction) 사용법
TCL(Transaction Control Language)
트랜잭션을 제어하기 위한 언어
| 명령어 | 설명 |
|---|---|
| COMMIT | 트랜잭션 확정 |
| ROLLBACK | 트랜잭션 취소 |
| CHECKPOINT | 저장 시기 설정 |
1. COMMIT
- DML로 변경한 데이터를 데이터베이스에 적용할 때 사용한다.
- DML의 INSERT, UPDATE, DELETE를 수행 시 임시 저장소(TEMP)에 저장되고, COMMIT을 하면 영구 저장된다.
- COMMIT문을 사용하면 이전 데이터는 영원히 지워지고, 모든 사용자가 변경된 데이터를 확인할 수 있다.
- COMMIT문을 실행하면 하나의 트랜잭션이 종료되며, COMMIT이 실행되기 전에 다른 사용자가 해당 트랜잭션에 영향을 받는 데이터를 보거나 변경할 수 없다.
- 민감한 데이터 작업을 수행할 때는 수동 COMMIT으로 설정하고 작업하는 것이 안전하다.
- DBeaver(DBeaver)의 작업 메뉴바에서 T 모양을 누르면 수동 COMMIT으로, 손 모양 아이콘을 누르면 자동 COMMIT으로 변경된다.
START TRANSACTION; -- 트랜잭션 시작
(트랜잭션1);
COMMIT; -- 트랜잭션1을 COMMIT
2. ROLLBACK
- DML로 변경된 데이터를 변경 이전의 상태로 되돌릴 때 사용한다.
- ROLLBACK문 사용 시 이전 데이터를 다시 재저장하며, COMMIT되지 않은 상위 트랜잭션을 모두 ROLLBACK 시킨다.
- ROLLBACK문 사용 시 관련 행의 잠금이 풀려 다른 사용자들이 해당 데이터를 변경할 수 있다.
- SQL Server는 기본적으로 AUTO COMMIT 모드이므로 자동으로 COMMIT을 수행하며, 오류 발생 시엔 자동으로 ROLLBACK을 수행한다.
- DDL(DDL(Data Definition Language))은 트랜잭션의 ROLLBACK을 적용할 수 없으므로 주의해야 한다.
START TRANSACTION; -- 트랜잭션 시작
(트랜잭션1);
ROLLBACK; -- 트랜잭션1을 취소하고 이전 상태로 롤백
3. SAVEPOINT
- 효과적으로 오류 복구 처리를 사용하기 위한 저장점을 저장할 때 사용한다.
- 오류가 발생 시 전체 트랜잭션을 ROLLBACK하지 않고, 현 시점에서 SAVEPOINT까지의 일부 트랜잭션만의 오류 시점으로 되돌아갈 수 있다.
- 여러 개의 저장점을 지정할 수 있으며, 복잡한 대규모 트랜잭션에서 에러가 발생할 때 주로 사용한다.
SAVEPOINT 세이브포인트이름;
ROLLBACK TO 세이브포인트이름; -- 저장점으로 롤백