トランザクションをまだコミットしていない場合は、rollback
を試してください。 (commit
またはコマンドラインクライアントを終了して)既にトランザクションをコミットしている場合、最後のバックアップからデータを復元する必要があります。
バックアップを作成していない場合は、ほとんどがっかりしています。
「ロールバック」は、 transactions を使用した場合にのみ機能します。これにより、クエリをグループ化して、そのうちの1つだけが失敗した場合にすべてのクエリを元に戻すことができます。
ただし、既にトランザクションをコミットした場合(または通常のDELETEクエリを使用した場合)、データを戻す唯一の方法は、以前に作成したバックアップからデータを回復することです。
使用 BEGIN TRANSACTION
コマンドでクエリを開始します。いつでもROLLBACK
できるように。
例えば:
受け入れられた答えは常に正しいとは限りません。 MySQLでバイナリロギングを設定する場合、スナップショットとbinlogがまだある以前のポイントにデータベースをロールバックできます。
バイナリログを使用した7.5ポイントインタイム(インクリメンタル)リカバリは、この機能について学ぶための良い出発点です。
MySQLの場合:
start transaction;
savepoint sp1;
delete from customer where ID=1;
savepoint sp2;
delete from customer where ID=2;
rollback to sp2;
rollback to sp1;
ロールバックデータが必要な場合は、まずautocommit = 0を実行してから、クエリの削除、挿入、または更新を実行する必要があります。
クエリを実行した後、ロールバックを実行...
また、開発データベースからいくつかの値を削除しましたが、QAデータベースに同じコピーがあったため、スクリプトを生成し、オプション「スクリプトするデータのタイプ」から「データのみ」を選択し、テーブルを選択しました。
次に、同じデータを含む挿入ステートメントを取得し、開発データベースでスクリプトを実行します。