我有一个名为' node'的MySQL表,其中一个外键名为' parentNodeId'它引用了该表中的另一行;通过这种方式,我可以通过外键在其他节点中拥有节点。
好的,问题是当我想删除此表中的一行时,SQL错误输出:
无法删除或更新父行:外键约束失败 (
PFeCommerce
。node
,CONSTRAINTFK_857FE84548C76A8E
FOREIGN KEY (parentNodeId
)参考node
(id
))
所以我转到我要删除的行,然后设置字段' parentNodeId'具有NULL值。但错误仍在发生。
我做错了什么?
答案 0 :(得分:0)
问题不在于您想要删除子节点,而是您要删除的节点是另一个元素的父节点
见2例:
parent node // this one has id = 1
\
child node // this one has parentNodeID set to 1
如果删除子节点,则没有理由出错,因为只有子节点依赖于父节点,其他数据不依赖于子节点
在你的情况下:
parent node // id = 1
\
child node // this is the one you want to delete, parentNodeId = 1
\
another child node
现在你正在做什么,是你删除了“子节点”,但另一个节点(另一个子节点)的id在parentNodeId字段中,所以如果要删除“子节点”,会有一个指向非的关系 - 现有记录,由于键约束而导致错误