0

これが問題です。MySQL Workbench で行を削除し続けます (これは 3 回目です)。これは、通常、データを表示する必要がある各テーブルのタブを開き、同じタブをリサイクルするためです (詰まらないようにするため)。たとえば、ユーザー ID 24 のデータを表示するために [ユーザー] タブを開いて、ID 26 のユーザーのデータを表示する必要があるとします。そのため、WHERE 部分を id = 26 などに置き換えるだけですが、DELETE ステートメントを実行することもあります。 、しかしタブを閉じないでください。1週間後にID 28のユーザーを見たいとしましょう。ユーザータブに行き、それがSELECT文だと思ってWHERE部分を置き換えるだけで、それがDELETE ステートメント。

では、データを安全に削除するにはどうすればよいでしょうか。たとえば、本当にこれを削除しますか?というポップアップが表示されます。だから私はそれがdelete文であることを知っています。もちろん、ステートメントが SELECT か DELETE かどうかを調べることができ、試してみましたが、より安全な方法があるかどうかを確認したい多くの SELECT ステートメントとクエリを実行します。Workbench 固有のセーフ モードは、一般的な削除ステートメントでは機能しますが、特定のステートメント (WHERE X) では機能しません。MySQL の Workbench にはそのようなオプションはないかもしれませんが、別の代替ソフトウェアにはありますか? そして、はい、私は愚かで不注意で、注意を向けようとしますが、毎日多くのクエリを実行し、再び間違いを犯したくありません.

4

1 に答える 1

2

これを処理する良い方法は、トランザクションを使用することです。

例えば

delete from users where id = 2

安全策として、ロールバックするトランザクションでこのステートメントをラップします。

start transaction;
delete from users where id = 2
rollback;

ユーザーを削除する唯一の方法は、2 番目の行のみを選択するか、変更rollbackしてcommitクエリ全体を実行することです。

別のメモとして、上記のクエリを記述して、トランザクションの変更を確認できます。

start transaction;
select * from users where id = 2; # user exists
delete from users where id = 2;
select * from users where id = 2; # user gets deleted
rollback;
于 2015-04-20T18:01:05.873 に答える