0

MySQLのInnoDBテーブルについての私の知る限り、すべてのトランザクションはSTARTTRANSACTIONでラップされています。そしてCOMMITで終わります。明示的に述べない限り。

トランザクションブロックを明示的に定義する場合、次のようなことを行うのが正しいでしょうか。

SET AUTOCOMMIT = 0;
START TRANSACTION;
[SQL STATEMENTS]
COMMIT;
SET AUTOCOMMIT = 1;

この後の次のトランザクションは、InnoDbがデフォルトでトランザクションを処理する方法に戻りますか?私の意図は、アプリケーションで明示的に定義されたトランザクションのみを使用することですが、他のすべてのトランザクションはエンジンによって処理されます。

4

1 に答える 1

4

この場合、autocommit を 0 に設定する必要はありません。トランザクションを定義すると、暗黙的にそれが行われます。MySQL のドキュメントから: 「単一の一連のステートメントに対して暗黙的に自動コミット モードを無効にするには、START TRANSACTION ステートメントを使用します。」

于 2013-03-17T15:16:29.947 に答える