在SQL Server中更新“Hierarchyid”

时间:2010-08-23 05:02:11

标签: sql-server hierarchyid

我在SQL Server的一个表中使用了Hierarchyid数据类型。

现在我想要更改其中一行的父,但是当我改变它的所有后代HierarchyId时必须根据它改变。

是否有这样做的功能,或者我必须自己更改所有这些功能。 如果我需要这样做,最好的方法是什么?

提前致谢

1 个答案:

答案 0 :(得分:0)

使用“GetReparentedValue”功能执行此操作。

这就是我为数据库中的表所做的事情:

DECLARE @FatherNode AS _INT_

SELECT @FatherNode = [PLC_PLC_ID]
FROM [dbo].[Place]
WHERE ([PLC_ID] = @PLC_ID)

UPDATE [dbo].[Place]
SET 
    [PLC_Tree] = [PLC_Tree].GetReparentedValue([dbo].[PLC_IDToTree](@FatherNode),[dbo].[PLC_IDToTree](@PLC_PLC_ID))
WHERE 
    ([PLC_Tree].IsDescendantOf([dbo].[PLC_IDToTree](@PLC_ID)) = 1) OR
    ([PLC_ID] = @PLC_ID)