MySQL级联删除自引用父子表?

时间:2019-03-23 21:01:55

标签: php mysql triggers

我有这个MySql数据库表:

tbl_project
id
project_name
parent_id

如果项目是“父级”,则parent_id0

现在我正在尝试添加自引用外键

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 :(得分:0)

当您在新行的parent_id列中输入任何值时,外键要求在一行中id具有该值,因为这就是外键的工作方式。

如果要使用具有自引用关系的外键,对于没有父对象要引用的行的parent_id,应使用NULL而不是0。外键忽略NULL。