我有2个表:RubricsDocument
和Documents
。在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
答案 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;