3

いくつかのデータがロードされた 2 つのテーブルがあり、2 つのテーブルが相互に参照しています。テーブル B は、テーブル A の主キーを参照します。テーブル B に存在するテーブル行をテーブル A から手動で削除しようとすると、次のようになります。

#1451 - 親行を削除または更新できません: 外部キー制約が失敗します ( TableA. TableB, CONSTRAINT TableB_ibfk_2FOREIGN KEY ( column) REFERENCES flashcard( primaryKeyColumn))

ここで何が起こっているのかよくわかりません。私が理解していることから、TableA のいくつかの行を削除すると、テーブル B に存在する対応する行も自動的に削除されます (つまり、テーブル B に存在する場合) が、明らかにここではそうではなく、上記のエラーが表示されます。 .

誰か私の頭を叩いて理由を教えてくれませんか?

4

1 に答える 1

4

残念ながら、発生するはずの自動削除は行われません。削除するテーブル A の行から ID を含むテーブル B の行を手動で削除する必要があります。

表 B の外部キー列定義にON DELETE CASCADEを追加してみてください。

Hibernate またはその他の ORM ツールを使用している場合は、これを自動的に処理する「カスケード」メカニズムがあります。ただし、ここではデータベースと直接やり取りしているため、その行の ID が外部キーとして他のテーブルに存在する場合、行を削除できないことに注意する必要があります (あなたの場合のように、A の主キーはB の行の一部)。もちろん、ON DELETE CASCADE プロパティを指定しない限り。

于 2012-12-10T04:42:27.567 に答える