MySQL InnoDBのトランザクションの仕組み
MySQLでは、InnoDBストレージエンジンはトランザクションをサポートしています。InnoDBトランザクションを実装するために、以下の手順に従ってください。
- データベースがInnoDBストレージエンジンを使用していることを確認する。現在使用しているストレージエンジンは、次のコマンドで確認できます。
SHOW ENGINES;
InnoDBストレージエンジンの状態が「DEFAULT」になっていることを確認する。
- トランザクションを使用するには、先にトランザクションを開始する必要があります。トランザクションを開始するには、以下のコマンドを使用します。
START TRANSACTION;
または以下の略式コマンドを使用:
BEGIN;
- トランザクションでは、挿入、更新、削除などの一連のSQL文を実行できます。
- トランザクションのコミット。すべてのSQL文の実行が成功した場合は、以下のコマンドを使用してトランザクションをコミットします。
COMMIT;
これはすべての変更をデータベースに永続的に保存します。
- トランザクションがロールバックされました。トランザクションの実行中にエラーが発生するか、前の変更を元に戻す必要がある場合は、次のコマンドを使用してトランザクションをロールバックできます。
ROLLBACK;
これにより、すべての変更が取り消され、トランザクション開始前の状態に復元されます。
- トランザクションを終了する。トランザクションを完了した後、以下のコマンドを使用してトランザクションを終了できます。
END;
または以下の略語コマンドを使用してください:
COMMIT;
MySQLでは、各SQL文はデフォルトで自動的にトランザクションがコミットされます。トランザクションが有効になっていなかったり明示的にコミットされない限り、各SQL文は単一のトランザクションとして実行されます。従って、InnoDBトランザクションを使用する場合、関係するSQL文をすべてトランザクション内で実行し、トランザクションを明示的にコミットまたはロールバックする必要があります。