Обновление «Иерархии» в SQL Server - PullRequest
1 голос
/ 23 августа 2010

Я использовал тип данных Hierarchyid в одной из моих таблиц в SQL Server.

Теперь я хочу изменить отца одной из строк, но когда я изменяю, все его потомки HierarchyId должны меняться в соответствии ск этому.

Есть ли функция, чтобы сделать это, или я должен изменить их все сам.Если мне нужно сделать это, что лучше?

Заранее спасибо

1 Ответ

0 голосов
/ 23 августа 2010

Используйте для этого функцию «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)
...