我有一个数据库表,我刚刚添加了一个层次结构列。唯一的其他相关列是ID列(主键)。 ID = 1的条目是我的根(设置为HierarchyID :: GetRoot())。我可以在层次结构中创建一个孩子,但是我似乎无法找到一种方法来迭代我现有的数据,以使所有剩余的条目成为根的子项。我的所有尝试都以所有其他具有相同层次结构值的行结束。
IE - 层次结构应如下所示:
ID | Hierarchy
-------------
1 | /
2 | /1
3 | /2
etc
我的尝试看起来都像
ID | Hierarchy
-------------
1 | /
2 | /1
3 | /1
etc
我可以使用某种形式的简单更新语句或游标循环来填充我的表格吗? 更好的是有一种方法来填充它,以便Hierarchy.ToString()使#in /#等于ID? (这很好,但远非需要。
提前致谢。
答案 0 :(得分:1)
您可以使用ID
构建一个字符串,并将其用作hierarchyid::Parse的参数
update T
set Hierarchy = case when ID = 1
then hierarchyid::GetRoot()
else hierarchyid::Parse('/'+cast(ID as varchar(10))+'/')
end