DB

[MySQL] START TRANSACTION 완벽 가이드 사용법(트랜잭션 제어 시작)

인생아 2025. 6. 17. 12:29
반응형

START TRANSACTION이란?

START TRANSACTION은 MySQL에서 트랜잭션을 수동으로 시작할 때 사용하는 명령어이다.
이 명령어 이후에 실행된 데이터 변경 작업들은 실제 데이터베이스에 반영되지 않고 임시 상태로 보관된다.
트랜잭션이 끝날 때 COMMIT이나 ROLLBACK을 통해 저장하거나 취소할 수 있다.

자동 커밋과 수동 트랜잭션의 차이

MySQL은 기본적으로 autocommit이 활성화되어 있다.
이 상태에서는 INSERT, UPDATE, DELETE와 같은 DML 문이 실행되면 자동으로 저장된다.
하지만 여러 작업을 하나의 단위로 처리하고 싶을 때는 autocommit을 끄고 수동으로 트랜잭션을 제어하는 것이 좋다.

SET autocommit = 0;
START TRANSACTION;
-- 여러 개의 작업 수행
COMMIT;
반응형

BEGIN과의 차이

BEGIN도 트랜잭션을 시작하는 명령어이다.
기능상 START TRANSACTION과 동일하지만, 가독성과 명확한 의도를 위해 START TRANSACTION 사용을 권장한다.

-- 두 명령어는 같은 동작을 한다
START TRANSACTION;
-- 또는
BEGIN;

실전 예제

다음은 트랜잭션을 활용한 간단한 예제이다.

START TRANSACTION;

INSERT INTO accounts (user_id, balance) VALUES (1, 1000);
UPDATE accounts SET balance = balance - 100 WHERE user_id = 1;

COMMIT;

위 코드는 계좌 잔액을 줄이는 작업과 삽입 작업을 하나의 트랜잭션으로 묶은 예시이다.
중간에 문제가 발생하면 ROLLBACK을 사용하여 전체 작업을 취소할 수 있다.

트랜잭션이 적용되지 않는 경우

MySQL에서 트랜잭션이 적용되려면 InnoDB 스토리지 엔진을 사용해야 한다.
MyISAM과 같은 엔진은 트랜잭션을 지원하지 않으므로 START TRANSACTION이 효과가 없다.

CREATE TABLE sample (
  id INT PRIMARY KEY,
  name VARCHAR(100)
) ENGINE=InnoDB;

테이블 생성 시 ENGINE=InnoDB를 명시하는 것을 잊지 말아야 한다.

반응형

요약

항목 내용
명령어 START TRANSACTION
별칭 BEGIN
주요 기능 트랜잭션 시작
주의사항 InnoDB 엔진 사용 필수, autocommit 비활성화 필요
사용 목적 데이터 무결성 확보, 실수 방지, 원자적 작업 수행
 

마무리

START TRANSACTION은 데이터베이스에서 트랜잭션 처리를 시작하기 위한 가장 기본적인 명령어이다.
실무에서의 안정적인 데이터 처리를 위해 반드시 이해하고 사용할 수 있어야 하는 기능이다.

 

반응형