错误:无法删除或更新父行:外键约束失败

时间:2018-10-25 08:20:43

标签: mysql foreign-keys

我有2个表:RubricsDocumentDocuments。在RubricsDocument中,我具有文档的ID(外键)。我的目标是删除一个文档,但出现错误

Cannot delete or update a parent row: a foreign key constraint fails

出现。我尝试删除文档前的文档标题,但无法正常工作。我不知道该怎么办才能解决此错误。

http://sqlfiddle.com/#!9/204749来查看表的创建

RubricsDocument Table
-
1450    1   1   245 66
<-- 66 is id of the document    
1451    2   1   296 66    
1452    3   1   297 66    
1453    4   1   298 66    
1456    7   1   301 66

2 个答案:

答案 0 :(得分:0)

  

我尝试删除文档之前的文档标题,但是   不起作用

它应该正常工作,除非该表中有一列,该列也被另一个表作为外键引用。当您第一次在评论中发布CREATE语句时,两个表都具有此类引用,但是您提供的链接显示了不同的语句。
因此,如果链接包含实际的CREATE语句,则您可以先删除引用的行,然后再删除NETENTDOC中的行。
但是,如果将ON DELETE CASCADE应用于FOREIGN KEY

,则可以实现所需的目标
CREATE TABLE `NETDOCRUB` (
    `NETIDDOCRUB` BIGINT(20) NOT NULL AUTO_INCREMENT,
    `NETNUPOS` BIGINT(2) NOT NULL,
    `NETFGVISIBLE` TINYINT(4) NOT NULL,
    `NETIDRUB` BIGINT(20) NOT NULL,
    `NETIDENTDOC` BIGINT(20) NOT NULL,
    PRIMARY KEY(`NETIDDOCRUB`),
    FOREIGN KEY (`NETIDENTDOC`) REFERENCES `NETENTDOC` (`NETIDENTDOC`) ON DELETE CASCADE
);

ON DELETE CASCADE负责删除“父”行时删除所有“子”行。

答案 1 :(得分:0)

您可以简单地禁用外键检查,这将允许您删除表的行,即使它被用作其他一些表的外键。检查下面的查询

SET FOREIGN_KEY_CHECKS=0;