更新“Hierarchyid”在 SQL Server 中

发布于 2024-09-15 17:05:27 字数 181 浏览 5 评论 0原文

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

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

有没有一个函数可以做到这一点,或者我必须自己更改所有这些。 如果我需要这样做,最好的方法是什么?

提前致谢

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

葬花如无物 2024-09-22 17:05:27

使用“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)

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)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文