Updating “Hierarchyid” in SQL Server

匿名 (未验证) 提交于 2019-12-03 08:30:34

问题:

I've used Hierarchyid data type in one of my tables in SQL Server.

Now I want to change the father of one of the rows, but when I change that all its descendant HierarchyId's must change according to that.

Is there a function to do that or I must change all of them myself. If I need to do that, what is the best way ?

Thanks In advance

回答1:

Use the "GetReparentedValue" Function to do it.

This is what I did for a table in my database :

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) 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!