当我执行下一个SQL代码时:
delete from product where idproduct = 2;
我收到了下一个错误:
Error Code: 1451. Cannot delete or update a parent row: a foreign key constraint fails (`store`.`sale_detail`, CONSTRAINT `fk_sale_detail_product1` FOREIGN KEY (`idproduct`) REFERENCES `product` (`idproduct`) ON DELETE NO ACTION ON UPDATE NO ACTION)
当我尝试删除我的表中的孩子不想要的时候,但是我只是想删除没有删除品牌的产品行..
答案 0 :(得分:0)
您不能违反Referencial Integrity Constraint
规则。您应该选择级联选项ON DELETE CASCADE
。
您需要先删除子行,然后删除父行。
您可以暂时禁用FK检查SET FOREIGN_KEY_CHECKS=0;
并在删除后启用它们。
删除所有FK约束,执行delete
,然后再次重新创建FK约束。
最佳选择:通过在表格中添加Status
列来进行软删除,只需将该列更新为Deleted
。
答案 1 :(得分:0)
您在idproduct列的store.sale_detail表中有一个外键约束。因此,如果您要删除产品,则需要确保在sale_detail表中未引用该产品。
另一个解决方案是修改您的外键,这样当您删除product表上的行时,sale_detail上的引用行在相应列上变为NULL。实际上你有:
ON DELETE NO ACTION
但你可以:
ON DELETE SET NULL
此外,您可以强制删除sale_detail表上的所有引用:
ON DELETE CASCADE
希望它有所帮助。