【问题标题】:Deleting from a MySQL table with foreign key constraints从具有外键约束的 MySQL 表中删除
【发布时间】:2012-12-10 04:33:54
【问题描述】:

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

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

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

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

【问题讨论】:

标签: mysql foreign-keys constraints


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-24
    • 1970-01-01
    相关资源
    最近更新 更多