2010-05-05 104 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