デフォルトでは、MySQL は自動コミットモードで稼動します。この場合、テーブルを更新(変更)するステートメントを実行すると、MySQL によって直ちにその更新がディスクに格納されます。
        トランザクションセーフテーブル(InnoDB
        や
        BDB)を使用している場合は、次のコマンドを使用して
        MySQL
        を非自動コミットモードに設定することができます。
      
SET AUTOCOMMIT=0
        AUTOCOMMIT
        変数をゼロに設定して自動コミットモードを無効にした後は、COMMIT
        を使用して変更内容をディスクに格納するか、または、トランザクションの開始以来行った変更を無視する場合は
        ROLLBACK
        を使用する必要があります。
      
        ひと続きのステートメントのみに対して自動コミットモードを無効にするときには、START
        TRANSACTION
        ステートメントを使用できます。
      
:
START TRANSACTION; SELECT @A:=SUM(salary) FROM table1 WHERE type=1; UPDATE table2 SET summmary=@A WHERE type=1; COMMIT;
        トランザクションを開始するときには、START
        TRANSACTION の代わりに BEGIN
        と BEGIN WORK も使用できます。
        START TRANSACTION は MySQL 4.0.11
        で追加されました。これは SQL-99
        の構文であり、トランザクションを随時開始するときにはこの構文が推奨されます。BEGIN
        は MySQL 3.23.17 以降で、BEGIN WORK は
        MySQL 3.23.19 以降で使用できます。
      
注意: 使用しているテーブルがトランザクションセーフテーブルでない場合は、自動コミットモードのステータスにかかわらず、すべての変更が直ちに格納されます。
        非トランザクションテーブルを更新した後に
        ROLLBACK
        ステートメントを発行すると、エラー(ER_WARNING_NOT_COMPLETE_ROLLBACK)が警告として出力されます。トランザクションセーフテーブルはいずれもリストアされますが、非トランザクションセーフテーブルは変更されません。
      
        START TRANSACTION または SET
        AUTOCOMMIT=0
        を使用している場合は、以前の更新ログの変わりにMySQL
        バイナリログをバックアップ用に使用してください。トランザクションは
        COMMIT
        と同時にひとまとまりでバイナリログに格納されるため、ロールバックされたトランザクションが格納されることはありません。
        See 項4.10.4. 「バイナリログ」。
      
        トランザクションの分離レベルを変更するには、SET
        TRANSACTION ISOLATION LEVEL を使用します。 See
        項6.7.6. 「SET TRANSACTION 構文」。
      
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.
