0

参照整合性を維持するために、複数のテーブルに外部キー制約を設定しています ON CASCADE DELETE

ただし、開発環境で本番データセットのトリミング/サニタイズされたコピーを作成したい場合が主な例です。だから私は次のようなことができるようにしたいと思います:

DELETE FROM x WHERE foo = 'bar'

y削除された行を参照する別のテーブルの行xも削除されます。現在、私の制約が整っていると、これは次のように失敗します:

Cannot delete or update a parent row: a foreign key constraint fails

テーブルを変更せずにMySQLでこれを行う方法はありますか? DELETE CASCADE FROM x WHERE foo = 'bar'Oracle や Postgres のようなものを漠然と覚えていますが、MySQL でこれを行う方法がわかりません。

私は知っていますが、それはぶら下がっている参照を;FOREIGN_KEY_CHECKS = 0に残すだけです。yそれらを取り除いてほしい。

4

1 に答える 1

0

これを試して、

DELETE x, y
FROM  x 
      INNER JOIN y ON x.foo = y.foo
WHERE x.foo = 'bar'
于 2013-01-13T16:00:54.913 に答える