我有两个表,其中加载了一些数据,两个表互相引用。表B引用了表A的主键。我手动尝试从表A中删除表B中的一些表行,我得到了这个:
#1451 - 无法删除或更新父行:外键约束失败(TableA
。TableB
,CONSTRAINT TableB_ibfk_2
FOREIGN KEY(column
)参考flashcard
(primaryKeyColumn
))
我不太清楚这里有什么。根据我的理解,如果我删除TableA的某些行,那么它们应该自动删除表B中存在的相应行(即如果它们存在于表B中)但显然这不是这里的情况并且它提示上述错误
有人想打我的脑袋,让我知道为什么?
答案 0 :(得分:4)
不幸的是,您认为应该发生的自动删除不会发生。您需要手动删除表B中包含您要删除的表A中的行ID的行。
尝试将 ON DELETE CASCADE 添加到表B中的外键列定义中。
如果您正在使用Hibernate或其他一些ORM工具,它将具有“级联”机制,可以自动处理此问题。但是,由于您直接与数据库连接,因此必须记住,如果所述行的ID作为外键存在于任何其他表中,则无法删除行(在您的情况下,A的主键存在于B)中的一些行。除非您指定ON DELETE CASCADE属性。