2012-01-20 9 views
1

私はMyISAMテーブルでトランザクションを開始しようとしましたが、 "クエリOK、0 rows affected(0.00 sec)"と答えました。MyISAMテーブルでSTART TRANSACTIONを実行中にエラーがスローされますか?

しかし、MySQLのすべてのバージョンで同じことが起こるかどうかはわかりません。

トランザクション中のクエリの非トランザクションモードでの動作に関する仕様はありますか?

+0

どうしましたか? SQL - –

+0

を表示してください。 "START TRANSACTION;"というクエリを実行してください。 – Determinant

+0

@ymfoiこれを行うと(START TRANSACTION)、テーブルを指定しないので、データベースにMyISAMテーブルのみが現在使用されていても常に動作します。 –

答えて

3

いいえ、エラーまたは警告は発生しません。トランザクションを開始するときは、特定のテーブルではなく、利用可能なすべてのトランザクションエンジンに対して実行します。

トランザクション内でトランザクションエンジンと非トランザクションエンジンの両方を使用するテーブルに対してクエリを実行できますが、もちろんトランザクションエンジンを持つテーブルで実行される変更はコミット/ロールバックする必要があります。

トランザクションではないエンジンのテーブルで実行されるクエリは、通常通り即座に効果があります。

+0

Thx!あなたの答えははっきりと正確です。 – Determinant

+0

あなたは大歓迎です! – Mchl

+0

@ymfoi、詳細はこちらをご覧ください:http://dev.mysql.com/doc/refman/5.6/en/ansi-diff-transactions.html ...基本的に、クエリを実行すると(内部と外部の両方トランザクションをサポートしていないテーブルでは、auto_commit = 1モードで動作します... –

関連する問題