2010-08-23 5 views
0

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

Теперь я хочу изменить отца одной из строк, но когда я изменю, все его потомки 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) 
Смежные вопросы