0

例如,我有一个父表,每个父母可以有一个孩子,所以父母有一个 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

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

谢谢

4

3 回答 3

0

我看到两个选项:

  1. 从表模式中删除FOREIGN KEY约束。外键约束确保所有元素都有一个有效的父元素。但是层次结构的根元素没有父元素,所以你不能要求它。

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

于 2013-06-19T23:06:17.277 回答
0

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

于 2013-06-19T22:27:27.813 回答
0

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

于 2013-06-19T23:10:45.370 回答