我有一个MySQL数据库。我想删除places.match_no > 26
和matches.chart_id = 106
的所有匹配项。
DELETE matches
FROM kk_matches AS matches
INNER JOIN places ON places.id = matches.place_id
AND places.match_no > 26
WHERE matches.chart_id = 106
这会导致错误:
#1451 - Cannot delete or update a parent row: a foreign key constraint fails...
怎么办?
答案 0 :(得分:3)
怎么办?
首先删除子表依赖行,然后删除父表行。您应该实际做的是定义CASCADE
选项,同时定义FOREIGN KEY
说ON DELETE CASCADE
。
另一种选择是拥有BEFORE DELETE
触发器,并且DELETE
子表行
答案 1 :(得分:1)
数据库中还有另一个表,它有一个kk_matches表的外键。在删除kk_matches表中的记录之前,需要删除kk_matches中指向该记录的其他表中的任何记录。其他你会成为"孤儿"那些其他记录。
外键作为避免这类操作的一种手段,会导致您的数据变得无关紧要。
答案 2 :(得分:1)
您无法删除具有外键约束引用的字段的行。您必须先删除引用行,然后删除所需的行(或删除约束,如果不是这样)。
查看本教程以获取更多信息: