是否有一种基于集合的方法来加载/读取带有 HierarchyId 的树枝

A-K*_*A-K 11 sql-server-2008 sql-server hierarchy sql-server-2008-r2

我正在玩 HierarchyId,但我还没有想出一种基于集合的方法来执行以下操作:

  • 一次插入所有子树
  • 一次检索所有子树

这个问题与我之前的问题有关,我怀疑使用 HierarchyId 完成这两个任务的唯一方法是一次一个节点或一个级别。如果我使用的是物化路径,那么这两个操作都可以通过一个(且简单的)基于集合的命令轻松完成。

我错过了什么?

编辑:我也错过了移动子树的方法,但我是从 Mikael Eriksson 的评论中学到的

Mik*_*son 5

要使用的函数是GetReparentedValue,但是当只GetReparentedValue使用树时,最终可能会处于“不一致”状态。

这是 Microsoft 提供的一些代码来处理这个问题。移动子树

我想与此相关的是Enforcing a tree。它为父 id 使用一个计算列,该列与 PK 进行自连接。