wintertreey 님의 블로그

[MySQL] Transaction 본문

SQL과 DB

[MySQL] Transaction

wintertreey 2025. 9. 8. 17:21

TRANSACTION

 

 

주요 트랜잭션 명령어

명령어 설명
BEGIN TRANSACTION / START TRANSACTION 트랜잭션 시작
COMMIT 트랜잭션 확정 → 변경 사항을 DB에 반영
ROLLBACK 트랜잭션 취소 → 변경 사항 모두 되돌림
SAVEPOINT 이름 트랜잭션 중간 저장 지점 설정
ROLLBACK TO SAVEPOINT 이름 지정한 SAVEPOINT까지 롤백
SET TRANSACTION 트랜잭션 격리 수준 지정 (READ COMMITTED, SERIALIZABLE 등)

 

예시

START TRANSACTION; -- 트랜잭션 시작

UPDATE accounts SET balance = balance - 100 WHERE user_id = 1;
UPDATE accounts SET balance = balance + 100 WHERE user_id = 2;

-- 문제가 없으면
COMMIT;

-- 문제가 생기면
ROLLBACK;

 

SAVEPOINT 사용예시

START TRANSACTION;

UPDATE accounts SET balance = balance - 100 WHERE user_id = 1;
SAVEPOINT sp1; --SAVEPOINT 지점 지정

UPDATE accounts SET balance = balance + 100 WHERE user_id = 2;

-- 두 번째 쿼리 문제 발생
ROLLBACK TO sp1;  -- sp1까지만 롤백
COMMIT;

 

보통 TRANSACTION을 SERVICE 에서 어노테이션을 걸어 프로그램 상에서 처리하는게 일반적이다.

그러나 데이터베이스에서 직접 작업을 해야할땐 한번 쿼리를 날린 후 백업이 안되기 때문에 꼭 TRANSACTION 처리를 해야한다.

 

 

 

 

'SQL과 DB' 카테고리의 다른 글

[MySQL] Rename, JOIN  (0) 2025.09.04
[MyBatis]1:N 객체 매핑 : <resultMap> <collection>, flatMap이란  (0) 2025.09.04
[MySQL] UPDATE  (0) 2025.08.29
[MySQL] SELECT  (2) 2025.08.26
[MySQL] INSERT  (0) 2025.08.26