2010-08-23 15 views
0

J'ai utilisé le type de données Hierarchyid dans l'une de mes tables dans SQL Server.Mise à jour de "Hierarchyid" dans SQL Server

Maintenant, je veux changer le père de l'une des lignes, mais quand je change que tous ses descendants HierarchyId doivent changer en fonction de cela.

Y at-il une fonction pour le faire ou je dois tous les changer moi-même. Si j'ai besoin de faire cela, quelle est la meilleure façon?

Merci à l'avance

Répondre

0

Utilisez la fonction "GetReparentedValue" de le faire.

C'est ce que je l'ai fait pour une table dans ma base de données:

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)