MySQL каскадное удаление в таблице родительских и дочерних ссылок? - PullRequest
3 голосов
/ 24 марта 2019

У меня есть таблица базы данных MySql:

tbl_project
id
project_name
parent_id

Если проект является «родительским», parent_id равен 0.

Теперь я пытаюсь добавитьсобственный ссылочный внешний ключ

CONSTRAINT `FK_tbl_project_tbl_project` FOREIGN KEY (`parent_id`) REFERENCES `tbl_project` (`id`) ON DELETE CASCADE

Когда я пытаюсь вставить новую запись,

SQL Error (1452): Cannot add or update a child row: a foreign key constraint fails (mydbname.#sql-3539_d7d, CONSTRAINT FK_tbl_project_tbl_project FOREIGN KEY (parent_id) REFERENCES tbl_project (id) ON DELETE CASCADE)

По сути, я просто хочу, чтобы все дочерние элементы были удалены при удалении родительского элемента.Что мне здесь не хватает?

1 Ответ

0 голосов
/ 24 марта 2019

Когда вы вводите любое значение в столбец parent_id новой строки, внешний ключ требует наличия строки, в которой id имеет это значение, потому что именно так работают внешние ключи.

Если вы хотите использовать внешний ключ с вашими ссылками на себя, вы должны использовать NULL вместо 0 для parent_id строки, в которой нет родителя для ссылки. Внешние ключи игнорируют NULL.

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