使用外键约束删除行

时间:2014-05-09 11:24:18

标签: mysql sql foreign-keys

我有一个名为' node'的MySQL表,其中一个外键名为' parentNodeId'它引用了该表中的另一行;通过这种方式,我可以通过外键在其他节点中拥有节点。

好的,问题是当我想删除此表中的一行时,SQL错误输出:

  

无法删除或更新父行:外键约束失败   (PFeCommercenode,CONSTRAINT FK_857FE84548C76A8E FOREIGN KEY   (parentNodeId)参考nodeid))

所以我转到我要删除的行,然后设置字段' parentNodeId'具有NULL值。但错误仍在发生。

我做错了什么?

1 个答案:

答案 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字段中,所以如果要删除“子节点”,会有一个指向非的关系 - 现有记录,由于键约束而导致错误