我有一个父表例子,每个父母可以有一个孩子,所以父母有一个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
我希望这是一个很好的方法:)
谢谢
答案 0 :(得分:0)
好吧,外键是数据库强制执行的约束,因此数据保持一致。没有解决方法。
答案 1 :(得分:0)
我看到两个选项:
从表架构中删除FOREIGN KEY
约束。外键约束确保所有元素都具有有效父级。但是层次结构的根元素没有父元素,因此您不能要求它。
添加ID为0的子项,并将children_id
设置为此值。其余的代码必须特别对待这个孩子,因为它代表了层次结构的根。
答案 2 :(得分:0)
感谢您的所有答案,但我想我找到了一个解决方案:创建一个表来连接2个菜单并从菜单表中删除menu_id