Instruction de la table de fermeture INSERT incluant la colonne de niveau / distance

Je parle de la présentation de Bill Karwin afin de mettre en place une table de fermeture qui m'aidera à gérer les hiérarchies. Malheureusement, la présentation ne montre pas comment je pourrais insert / mettre à jour la colonne Level mentionnée sur la diapositive 67; cela aurait été très utile. J'y ai réfléchi mais je ne pouvais pas find quelque chose de concret que je pourrais tester. Voici ce que j'ai obtenu jusqu'ici:

 create procedure USP_OrganizationUnitHierarchy_AddChild @ParentId UNIQUEIDENTIFIER, @NewChildId UNIQUEIDENTIFIER AS BEGIN INSERT INTO [OrganizationUnitHierarchy] ( [AncestorId], [DescendantId], [Level] ) SELECT [AncestorId], @NewChildId, (here I need to get the count of ancestors that lead to the currently being selected ancestor through-out the tree) FROM [OrganizationUnitHierarchy] WHERE [DescendantId] = @ParentId UNION ALL SELECT @NewChildId, @NewChildId END go 

Je ne sais pas comment je pourrais faire ça. Des idées?

Vous savez que pour Parent = self, vous avez Level = 0 et lorsque vous copyz des paths depuis l'ancêtre, vous augmentez simplement Level de 1:

 create procedure USP_OrganizationUnitHierarchy_AddChild @ParentId UNIQUEIDENTIFIER, @NewChildId UNIQUEIDENTIFIER AS BEGIN INSERT INTO [OrganizationUnitHierarchy] ( [AncestorId], [DescendantId], [Level] ) SELECT [AncestorId], @NewChildId, [Level] + 1 FROM [OrganizationUnitHierarchy] WHERE [DescendantId] = @ParentId UNION ALL SELECT @NewChildId, @NewChildId, 0 END