0

次の質問があります

  1. DELETE FROM A WHERE Id IN (SELECT Id FROM B)
  2. Bから削除

1)は2)に依存しているため、2番目のステートメントが実行される前に最初のステートメントが完了していることを確認したい

これらのクエリをこのように実行するかどうかを知りたいのですが、SQL は最初のトランザクションを完了してから 2 番目のトランザクションを開始しますか? または、最初のトランザクションが完了した後にのみ 2 番目のトランザクションが開始されるようにする方法はありますか?

どんな助けでもいただければ幸いです

4

4 に答える 4

1

クエリをセミコロンで区切って連続して実行できます;。詳細については、MySQL のドキュメントを参照してください。

単に行う:

DELETE FROM A WHERE Id IN (SELECT Id FROM B); DELETE FROM B;

あなたの要件に基づいて; これは、以下の例に基づいて、まさにあなたが求めたことを行います:

mysql> select sleep(5); show databases;
+----------+
| sleep(5) |
+----------+
|        0 |
+----------+
1 row in set (5.00 sec)

+--------------------+
| Database           |
+--------------------+
|         ...        |
+--------------------+
9 rows in set (0.01 sec)

これは、mysql -eコマンドと事実上すべての mysql ライブラリ (php を使用したライブラリなど) で実行できます。

于 2013-11-12T23:19:39.550 に答える