null foreignkey mysql不能为null

时间:2013-06-19 22:23:27

标签: mysql sql foreign-keys

我有一个父表例子,每个父母可以有一个孩子,所以父母有一个children_id

如果没有孩子,我想将children_id设置为0,但是id为0的孩子不存在,所以我有这个错误

Cannot add or update a child row: a foreign key constraint fails (parent, CONSTRAINT `parent_ibfk_4` FOREIGN KEY (`children_id`) REFERENCES `children` (`id`) ON DELETE CASCADE ON UPDATE CASCADE)

编辑: 我案例的一个更接近的例子

我有一个菜单表,但菜单可以指向另一个菜单,所以菜单表中有一个menu_id,menu_id链接到菜单ID,但第一个菜单不能有menu_id

我希望这是一个很好的方法:)

谢谢

3 个答案:

答案 0 :(得分:0)

好吧,外键是数据库强制执行的约束,因此数据保持一致。没有解决方法。

答案 1 :(得分:0)

我看到两个选项:

  1. 从表架构中删除FOREIGN KEY约束。外键约束确保所有元素都具有有效父级。但是层次结构的根元素没有父元素,因此您不能要求它。

  2. 添加ID为0的子项,并将children_id设置为此值。其余的代码必须特别对待这个孩子,因为它代表了层次结构的根。

答案 2 :(得分:0)

感谢您的所有答案,但我想我找到了一个解决方案:创建一个表来连接2个菜单并从菜单表中删除menu_id