我有这个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)
基本上,我只想在删除父级时删除所有子项。我在这里错过了什么?
当您在新行的parent_id列中输入任何值时,外键要求存在 id 具有该值的行,因为这就是外键的工作方式。
如果要将外键用于自引用关系,则应使用 NULL 而不是 0 作为没有父级引用的行的parent_id
。外键忽略 NULL。