2011-12-23 10 views
0

CREATE TABLEなどのSQLステートメントはトランザクションで使用できますか?tbl_name ...例えばInnoDbトランザクションと作成ステートメント

begin; 

CREATE TABLE .......; 

sdfghjk; 

rollback; 

テーブルはまだ失敗したトランザクション内の文、および終了時にロールバックにもかかわらず、作成されます。トランザクション内の文が失敗した場合にテーブルが作成されないようにする方法はありますか?

答えて

1

DDL文はトランザクション内で使用できますが、通常はトランザクションの影響を受けません。いくつかの文をロールバックすることはできません

:ロールバックすることができないことができるもので、MySQLのドキュメントから。一般的に、これには、テーブルを作成、削除、または変更したり、 ルーティンを保存したりするデータベースなど、データを作成するもの、 データベースなどのデータ 定義言語(DDL)ステートメントが含まれます。

このような記述を含まないようにトランザクションを設計する必要があります。 ロールバックできないトランザクションで早期にステートメントを発行し、その後別のステートメントが失敗した場合は、ROLLBACK ステートメントを発行して、 トランザクションの完全な効果をロールバックすることはできません。

Source

1

あなたはまだあなたがcreate temporary table....を行うことができ、テーブルを使用する必要がある場合。トランザクションはコミットされませんが、接続が切断されると削除されます。

関連する問題