2011-09-28 6 views
10

データベースを変更せずにmysqlクエリをテストする方法はありますか?mysqlクエリをシミュレート

たとえば、実際に削除することなくdelete from my_table where id=101を実行できますか?挿入と更新はどうですか?

TY

+0

なぜそれらをテストする必要がありますか? –

+2

@Pekka笑更新プログラムが実際に行う前に行うと思われることを手動でチェックすること。 – Will

答えて

17

クエリを実行する前にトランザクションを開始してから、実行後にロールバックすることができます。これを行うには、InnoDBまたはXtraDbテーブルが必要です(MyISAMでは動作しません)。 MySQLへの次の文を送って、トランザクションを開始するには

START TRANSACTION; 

そして、あなたのクエリの最後には、次のステートメントを実行します。

ROLLBACK; 

あなたのデータベースはポイントから変更することはありません他の接続のビュー。現在の接続にはROLLBACKまでの変更が表示され、その後は元の状態に戻ります。

+4

申し訳ありませんが、私は結果が好きだと判断した場合、どうすれば保存できますか? 'END TRANSACTION;'?さて、私はGoogleに向かわなければなりません... *迷う*答えは['COMMIT'](http://dev.mysql.com/doc/refman/5.6/en/commit.html)でした。 。 – Zenexer

1

データベースをテストデータベースにコピーするか、インポートスクリプトを自動生成します。テストデータベース上の任意のものをテストし、スクリプトまたはインポートを使用して再テストすることができます。

5

削除する行の数を確認したい場合は、 'select count(*)'を 'delete'に置き換えてください。