我在 SQL Server 的一张表中使用了 Hierarchyid 数据类型。
现在我想更改其中一行的父亲,但是当我更改它时,它的所有后代 HierarchyId 都必须根据它进行更改。
是否有这样做的功能,或者我必须自己更改所有功能。如果我需要这样做,最好的方法是什么?
提前致谢
我在 SQL Server 的一张表中使用了 Hierarchyid 数据类型。
现在我想更改其中一行的父亲,但是当我更改它时,它的所有后代 HierarchyId 都必须根据它进行更改。
是否有这样做的功能,或者我必须自己更改所有功能。如果我需要这样做,最好的方法是什么?
提前致谢
使用“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)