MySQL에서는 START TRANSACTION 문뿐만 아니라 BEGIN 문을 사용해서도 새로운 트랜잭션을 시작할 수 있습니다. 두 문장의 기능은 완전히 동일합니다.
사용 예시
mysql> BEGIN; Query OK, 0 rows affected (0.00 sec) mysql> INSERT INTO Marks Values(1, 'Aarav','History',40); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO Marks Values(2, 'Harshit','History',48); Query OK, 1 row affected (0.00 sec) mysql> ROLLBACK; Query OK, 0 rows affected (0.04 sec)
위 예시에서는 START TRANSACTION 대신 BEGIN 문으로 트랜잭션을 시작했습니다. 이후 두 개의 INSERT 문이 실행되고, 마지막에 ROLLBACK 문이 호출되었습니다.
ROLLBACK 문은 트랜잭션 내에서 데이터베이스에 적용된 모든 변경 사항을 되돌립니다. 아래 결과 집합을 보면 테이블에 어떠한 새로운 값도 삽입되지 않았음을 확인할 수 있습니다.
mysql> SELECT * FROM Marks; +------+---------+---------+-------+ | Id | Name | Subject | Marks | +------+---------+---------+-------+ | 1 | Aarav | Maths | 50 | | 2 | Harshit | Maths | 55 | +------+---------+---------+-------+ 2 rows in set (0.00 sec)
정리
- BEGIN과 START TRANSACTION은 동일한 기능을 하는 트랜잭션 시작 문입니다.
- ROLLBACK을 실행하면 COMMIT 전까지의 변경 사항이 모두 취소됩니다.
- 여러 개의 DML 문(INSERT, UPDATE, DELETE 등)을 하나의 작업 단위로 묶어 처리할 때 유용합니다.