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