트랜잭션을 지원하는 스토리지 엔진은 InnoDB하고 NDB, BDB이다.
또 MySQL에는 auto commit 모드라는 개념이 있다.
auto commit이 유효(MySQL의 표준)인 경우 트랜잭션개시에는 반드시 START TRANSACTION이나 BEGIN이 필요하다.
이것을 잊어버리면 각 문장을 트랜잭션 처리가 되지 않고 실행할 때 곧바로 Commit되어 버린다.
덧붙여 BEGIN은 Stored Preocedure에서도 사용하는 키워드이기도 하기 때문에
이글에서 트랜잭션에 관해서는 START TRANSACTION을 사용하는 것으로 한다.
START TRANSACTION예
mysql>START TRANSACTION
mysql>UPDATE t SET a=a+1 WHERE a<100;
mysql>INSERT t(a) values(200);
mysql>ROLLBACK;
MySQL에서는 트랜잭션중에 또다시 트랜잭션을 작성하는 것은 불가능하다.
또 트랜잭션 도중에 COMMIT/ROLLBACK을 잊어버리고 다시 START TRANSACTION을 실행했을 때, 지금까지의 트랜잭션데이터는 데이터에 반영되어 버리기 때문에 주의 해야한다.