2010-08-23 62 views
0

我在SQL Server的一個表中使用了Hierarchyid數據類型。在SQL Server中更新「Hierarchyid」

現在我想改變其中一行的父親,但是當我改變它的所有後代HierarchyId必須根據那個改變。

有沒有這樣做的功能,或者我必須自己改變所有的功能。 如果我需要這樣做,最好的方法是什麼?

在此先感謝

回答

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)