MySQL徹底入門で紹介されているトランザクション制御についてメモ。
START TRANSACTION 〜 COMMIT or ROLLBACKは基本的なので割愛し、その他の内容について紹介。
暗黙のトランザクション制御
トランザクションの実行中に電源が落ちるなどでサーバーが停止してしまった場合、次回起動時に自動的にROLLBACLされる。
START TRANSACTION;
-- いくつか実行して途中で落ちた。
-- 次回起動時に自動で↓
ROLLBACK;
SAVEPOINT
文字通りだが、ゲームのようにSAVEPOINTを置くことが可能で、ROLLBACK時にどこまで戻すかを指定可能。
START TRANSACTION;
SAVEPOINT save1;
-- 処理
SAVEPOINT save2;
-- 処理
-- ここで失敗
ROLLBACK TO save2;
-- 処理
COMMIT;
オートコミットモード
MySQLのデフォルトの動作として、クエリ実行すると即コミットされる(オートコミットモード)が、それを解除することも可能
SET AUTOCOMMIT=0; -- 0でオートコミット解除
SET AUTOCOMMIT=1; -- 1で戻せる