2010-05-05 107 views
3

我從MYSQL中的表中刪除選定的行,這兩個表都有外鍵。 刪除d,b從A作爲b內部連接B作爲d在b.bid = d.bid其中b.name像'%xxxx%';
MYSQL抱怨,即使我想從兩個表中刪除外鍵:mysql刪除和外鍵約束

錯誤:無法刪除或更新父行,外鍵約束失敗(yyy/d,約束fk_d_bid外鍵(bid)參考文獻bbid)ON DELETE NO ACTION ON UPDATE NO ACTION)


什麼這裏是最好的解決方案從兩個表中刪除?

回答

6

更改此限制以使用ON DELETE CASCADE - 這意味着如果刪除了一行,那麼任何「子」行也會自動刪除。

當然要小心使用CASCADE - 只有在必要時才使用它。如果你過分熱心,並且意外地做了一個妥善放置的DELETE,它可能最終會刪除你的數據庫的一半。 :)

請參閱documentation on foreign key constraints

0

我想我看到你想要做什麼

如果你不能改變表結構,那麼你可以使用2條語句,先用子選擇

的B刪除其中出價IN(選擇來自A的出價,其中名稱像'%xxxx%');

從A中刪除名稱如'%xxxx%';

+0

好主意,但我得到了你不能在FROM子句中指定目標表'B'進行更新 – user121196 2010-05-05 03:34:21