InnoDB
内では、全てのユーザ行動はトランザクション内で起こります。もし自動コミット
モードが有効なら、各 SQL
ステートメントはそれ自体の上に単一トランザクションを形作ります。MySQL
はデフォルトで自動コミットを有効にして新しい接続を始めます。
もし自動コミット モードが SET AUTOCOMMIT =
0
を利用してオフにされたら、ユーザは常にトランザクションを開いていると考える事ができます。SQL
COMMIT
か ROLLBACK
ステートメントは現在のトランザクションを終了し新しい物を開始します。COMMIT
は、現在のトランザクション内で行われた変更は永続的であり、別のユーザからも見る事ができるという事を意味します。ROLLBACK
ステートメントは反対に、現在のトランザクションによって行われた全ての変更をキャンセルします。両ステートメントは、現在のトランザクションの最中に設定された全ての
InnoDB
ロックをリリースします。
もしその接続の自動コミットが有効であれば、ユーザは明示的な
START TRANSACTION
か
BEGIN
ステートメントを利用して複合ステートメント
トランザクションを開始する事でそれを実行し、また
COMMIT
か ROLLBACK
を利用して終了する事ができます。