在mysql中删除层次结构的最有效方法是什么

时间:2017-02-09 10:38:15

标签: mysql sql-delete hierarchical-data

我正在使用邻接列表的修改版本来存储分层数据。所以创建了这种树。 enter image description here

以这种方式在mysql架构中表示相同:

enter image description here 在C之间删除节点的最佳方法是什么,以便子节点F,G现在是A的子节点?

1 个答案:

答案 0 :(得分:0)

在应用程序级别,您需要列出要删除的节点的子节点并分配这些子节点'将列级别转换为父节点。 否则,您可以从表中删除节点创建一个触发器,该触发器将执行上述任务。 如果你能正确地构建你的表,你的所有任务都会更容易。 table应该只是父子关系,其中保存了直接父级。

 Id Name   ParentId
 1   A      NULL
 2   B      1
 3   D      2

级别可由no确定。时间递归完成。
你甚至可以通过添加父列并编写一个脚本来添加列中可用的最后一个级别来实现 所以在这种情况下,删除只是简单的 1.得到孩子的清单 - parentid = nodeid 2.使用nodeids更新其父列' parentId的。
而不是更新和计算所有3级列。