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은 데이터베이스에서 트랜잭션 처리를 시작하기 위한 가장 기본적인 명령어이다.
실무에서의 안정적인 데이터 처리를 위해 반드시 이해하고 사용할 수 있어야 하는 기능이다.
'DB' 카테고리의 다른 글
| [MySQL] SAVEPOINT 완벽 가이드 사용법(트랜잭션 중간 지점 저장) (1) | 2025.06.17 |
|---|---|
| [MySQL] ROLLBACK 완벽 가이드 사용법(변경사항 취소) (0) | 2025.06.17 |
| [MySQL] COMMIT 완벽 가이드 사용법(변경사항 확정) (0) | 2025.06.17 |
| [MySQL] BEGIN 완벽 가이드 사용법(트랜잭션 시작) (0) | 2025.06.17 |
| [MySQL] SHOW CREATE USER 완벽 가이드 사용법(계정 생성 정보 확인) (0) | 2025.04.02 |
| [MySQL] RESET PASSWORD 완벽 가이드 사용법(비밀번호 변경) (0) | 2025.04.02 |
| [MySQL] SHOW PRIVILEGES 완벽 가이드 사용법(모든 권한 확인) (0) | 2025.04.02 |
| [MySQL] UNLOCK TABLES 완벽 가이드 사용법(테이블 잠금 해제) (1) | 2025.04.02 |