Ошибка: невозможно удалить или обновить родительскую строку: ограничение внешнего ключа не выполнено - PullRequest
0 голосов
/ 25 октября 2018

У меня есть 2 таблицы: RubricsDocument и DocumentsRubricsDocument у меня есть идентификатор документа (внешний ключ).Моя цель - удалить один документ, но появляется ошибка

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

1 Ответ

0 голосов
/ 25 октября 2018

Я пытаюсь удалить рубрики документа перед документом, но это не работает

Это должно работать , если нет в этой таблице столбца, которыйтакже упоминается другой таблицей как внешний ключ.Когда вы впервые разместили операторы 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 заботится об удалении всех «дочерних» строк при удалении «родительской» строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...