从MySQL表外键约束删除(Deleting from a MySQL table with for

2019-07-04 20:33发布

我有两个表,在它加载一些数据和两个参考彼此。 表B引用表A的主键,我手动尝试删除表A存在于表B中的一些表行,我得到这样的:

#1451 -无法删除或更新父行,外键约束失败( TableATableB ,约束TableB_ibfk_2外键( column )参考flashcardprimaryKeyColumn ))

我不太清楚这是怎么回事这里。 据我了解,如果我删除TableA中的某些行那么就应该自动删除也存在于表B(即,如果它们存在于表B)相应行,但显然这不是这里的情况和它的提示上述错误。

任何人想捶我的头边,让我知道为什么吗?

Answer 1:

不幸的是,自动删除您认为应该发生的情况不会发生。 您将需要手动删除表B包含从表A,你要删除的行的ID行。

尝试添加ON DELETE CASCADE于表B.你的外键列定义

如果你正在使用Hibernate,或者其他的ORM工具,这将有一个“梯级”的机制,可以自动处理这个问题。 但这里因为你是直接与数据库进行交互,你必须记住,一排不能如在任何其他表的外键存在于所述行的ID(如在你的情况下,A的主键中不存在删除一些B中的行)的。 当然,除非你指定ON DELETE CASCADE属性。



文章来源: Deleting from a MySQL table with foreign key constraints