2009-03-20 10 views
1

J'ai une table type de données hiérarchiques dans ID, forme parentId.SQL Server 2005: détection de cycles dans des données hiérarchiques

CREATE TABLE Hierarchy (Id int, ParentId int NULL, Name varchar(128)); 
INSERT INTO Hierarchy VALUES (1, NULL, '1'); 
INSERT INTO Hierarchy VALUES (2, NULL, '2'); 
INSERT INTO Hierarchy VALUES (3, NULL, '3'); 
INSERT INTO Hierarchy VALUES (4, 1, '1.1'); 
INSERT INTO Hierarchy VALUES (5, 1, '1.2'); 
INSERT INTO Hierarchy VALUES (6, 4, '1.1.1'); 

J'ai besoin de détecter des cycles comme ci-dessous dans les données existantes. Les Id proviennent d'une autre table, donc je ne peux pas utiliser l'ordre des Ids comme partie de la solution. Il y a environ 1/2 million de lignes. Les données sont un grand nombre d'arbres indépendants de hauteur 1-5. L'intention est de nettoyer les données pour éliminer les cycles puis ajouter un déclencheur à la table pour éviter les cycles dans le futur. Je connais thealgorithms pour la détection de cycle. Il me semble que ce devrait être un problème commun. Donc, je me demandais s'il y avait un moyen pratique dans la «boîte» de SQL Server pour accomplir ceci avec un minimum de code.

Répondre

Questions connexes