外部キーと相互リンクされた数十のテーブルを持つデータベースがあります。通常の状況では、ON DELETE RESTRICT
これらの制約のデフォルトの動作が必要です。しかし、データベースのスナップショットをコンサルタントと共有しようとすると、機密データを削除する必要がありました。私のDELETE FROM Table CASCADE
命令の記憶が純粋な幻覚ではなかったらいいのにと思います。
私がやったことは、データベースをダンプし、ON DELETE CASCADE
すべての外部キー制約に句を追加してダンプを処理するスクリプトを作成し、そこから復元し、削除を実行し、再度ダンプし、を削除しON DELETE CASCADE
、最後に再度復元することでした。これは、SQLでこれを行うために必要だった削除クエリを作成するよりも簡単でした。データベースのスライス全体を削除することは通常の操作ではないため、スキーマはそれに正確に適合していません。
次回このようなことが起こったときに、誰かがより良い解決策を持っていますか?