Database/Mysql

[MySQL][SQL] 8. TCL

noahkim_ 2026. 3. 8. 19:23

1. TCL

  • 데이터베이스에서 트랜잭션의 실행 흐름을 제어하는 SQL 명령어

 

2. 명령어

명령어 설명 특징
START TRANSACTION 트랜잭션 시작  
COMMIT 변경 사항을 확정 트랜잭션 종료 (Rollback 불가)
ROLLBACK 변경 사항 취소 - 트랜잭션에서 수행한 내용 모두 취소됨
- 트랜잭션이 비정상 종료되면 자동 롤백됨
SAVEPOINT 트랜잭션 내 특정 지점 지정 이 지점을 기준으로 부분 롤백이 가능함
ROLLBACK TO SAVEPOINT 지정된 지점으로 되돌림 트랜잭션 실행 중 오류로 인해 재실행 시, 전체 롤백이 아닌 부분롤백으로 계산량을 줄일 수 있음

 

예시

더보기
START TRANSACTION;

INSERT INTO tc_test VALUES('a');
INSERT INTO tc_test VALUES('b');
INSERT INTO tc_test VALUES('c');

SELECT * FROM tc_test;
-- 결과 : a, b, c

SAVEPOINT f1;

INSERT INTO tc_test VALUES('d');
INSERT INTO tc_test VALUES('e');
INSERT INTO tc_test VALUES('f');

SELECT * FROM tc_test;
-- 결과 : a, b, c, d, e, f

ROLLBACK TO f1;

SELECT * FROM tc_test;
-- 결과 : a, b, c

COMMIT;

 

3. 트랜잭션 오류

상황별 동작

상황 트랜잭션 상태 롤백 범위 SAVEPOINT 사용 여부
SQL 실행 중 일반 오류 트랜잭션 유지 해당 SQL만 실패 ✅ (선택적으로)
사용자가 ROLLBACK 실행 트랜잭션 종료 전체 롤백
사용자가 ROLLBACK TO SAVEPOINT 실행 트랜잭션 유지 지정 지점 이후만 롤백
DB 연결 종료 / 서버 crash 트랜잭션 종료 전체 자동 롤백

 

 

출처

'Database > Mysql' 카테고리의 다른 글

[MySQL][SQL] 7. DCL  (0) 2026.03.08
[MySQL][SQL] 5. Set Operation  (0) 2026.03.07
[MySQL][SQL] 4. Subquery  (0) 2026.03.05
[MySQL][SQL] 3-2. Inner Function: Multi Row  (0) 2026.03.05
[MySQL][SQL] 6. Join  (0) 2026.03.04