2012-12-10 95 views
3

我有兩個表,其中加載了一些數據,並且兩個表之間相互引用。表B引用了表A的主鍵。我手動嘗試刪除表A中存在的表B中的一些錶行,並且我得到:從具有外鍵約束的MySQL表中刪除

#1451 - 無法刪除或更新父行:外鍵約束失敗(TableATableB,約束TableB_ibfk_2外鍵(column)參考文獻flashcardprimaryKeyColumn))

我不太清楚這是怎麼回事這裏。據我所知,如果我刪除了TableA的一些行,那麼他們也應該自動刪除表B中存在的相應行(即如果它們出現在表B中),但顯然這裏不是這種情況,並且它提示上述錯誤。

有人想打我的頭,讓我知道爲什麼?

+0

http://stackoverflow.com/questions/1905470/cannot-delete-or-update-a-parent-row-a-foreign-key-constraint-fails –

回答

4

不幸的是,您認爲應該發生的自動刪除不會發生。您需要手動刪除表B中包含您希望刪除的表A中的行的ID的行。

嘗試增加ON DELETE CASCADE於表B.

你的外鍵列定義如果你正在使用Hibernate,或者其他的ORM工具,這將有一個「梯級」機制,將自動處理。但是,由於您直接與數據庫連接,因此您必須記住,如果所述行的ID存在於任何其他表中作爲外鍵,則不能刪除該行(在您的情況下,A的主鍵存在於B)中的一些行)。除非你指定ON DELETE CASCADE屬性。