从具有外键约束的 MySQL 表中删除

本教程将介绍从具有外键约束的 MySQL 表中删除的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。

从具有外键约束的 MySQL 表中删除 教程 第1张

问题描述

我有两个表,其中加载了一些数据,并且两个表相互引用.表 B 引用了表 A 的主键.我手动尝试从表 A 中删除表 B 中存在的一些表行,我得到了这个:

#1451 - 无法删除或更新父行:外键约束失败 (TableA.TableB, CONSTRAINT TableB_ibfk_2FOREIGN KEY (column) REFERENCES flashcard (primaryKeyColumn))

我不太确定这里发生了什么.据我了解,如果我删除 TableA 的某些行,那么它们也应该自动删除表 B 中存在的相应行(即,如果它们存在于表 B 中)但显然这里不是这种情况,它会提示上述错误.

有人想敲打我的脑袋告诉我为什么吗?

推荐答案

很遗憾,您认为应该发生的自动删除并没有发生.您需要手动删除表 B 中包含要删除的表 A 行中的 ID 的行.

尝试将 ON DELETE CASCADE 添加到表 B 中的外键列定义中.

如果您使用的是 Hibernate 或其他一些 ORM 工具,它会有一个级联"机制来自动处理这个问题.但是在这里,由于您直接与数据库交互,因此您必须记住,如果该行的 ID 作为外键存在于任何其他表中,则无法删除该行(如您的情况,A 的主键存在于B)中的一些行.当然,除非您指定 ON DELETE CASCADE 属性.

好了关于从具有外键约束的 MySQL 表中删除的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。