我正在MYSQL中从两个表中删除选定的行,这两个表都有外键。
DELETE d,b
FROM A as b
INNER JOIN B as d on b.bid=d.bid WHERE b.name LIKE '%xxxx%';
即使我试图从两个表中删除,MYSQL也会抱怨外键:
Error: Cannot delete or update a parent row: a foreign key constraint
fails (`yyy/d`, CONSTRAINT `fk_d_bid` FOREIGN KEY (`bid`) REFERENCES
`b` (`bid`) ON DELETE NO ACTION ON UPDATE NO ACTION)
从这两个表中删除的最佳解决方案是什么?
答案 0 :(得分:6)
更改此约束以使用ON DELETE CASCADE
- 这意味着如果删除某行,则也会自动删除任何“子”行。
当然要好好使用CASCADE - 只在必要时才使用它。如果你对它过于热心,并且不小心做了一个位置很好的DELETE,它最终可能会删除你数据库的一半。 :)
答案 1 :(得分:0)
我想我知道你要做什么
如果你不能改变表结构,那么你可以使用2个语句,第一个用子选择
从B中删除出价IN(从A中选择出价,其中名称为'%xxxx%');
从A中删除名称如'%xxxx%';