0
我有一個簡單的表字段:如何複製帶有hierarchyid的分支?
catalog_id hierarchyid NOT NULL UNIQUE,
item_id int NOT NULL identity(1,1),
item_name nvarchar(50) NOT NULL,
我需要一個存儲過程,將分支複製到另一個父。
例如,這樣的事情:
我做的過程從一個父移動一個分支到另一個,那就是:
ALTER PROCEDURE [dbo].[move_child]
@ChildId int,
@NewParentId int
AS
DECLARE @nold hierarchyid, @nnew hierarchyid
SELECT @nold = catalog_id FROM CatalogsTree WHERE item_id = @ChildId
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
BEGIN TRANSACTION
SELECT @nnew = catalog_id FROM CatalogsTree WHERE item_id = @NewParentId
SELECT @nnew = @nnew.GetDescendant(max(catalog_id), NULL)
FROM CatalogsTree WHERE catalog_id.GetAncestor(1)[email protected] ;
UPDATE CatalogsTree
SET catalog_id = catalog_id.GetReparentedValue(@nold, @nnew)
WHERE catalog_id.IsDescendantOf(@nold) = 1 ;
COMMIT TRANSACTION
但現在我需要使用相同的層次結構和item_name製作副本。
你的表是尖叫出去'parentId'列。所以'item_id:11'應該有'parent_id:9'。它會讓生活變得更簡單。 – Tanner 2014-11-04 11:27:58