Har en huvudtabell med ID:n och en relationstabell med ParentID och ChildIDCirkulär referens - hur kontrollera ?
Innan man sätter igång och bygger ett träd av ett id med children vill man ju kolla
att det inte kommer att bli en evighetsloop. Frågan är alltså :
Hur ?
Gjorde ett testskott som är lite väl noggrant, samma id får inte förekomma någonstans.
<code>
SET NOCOUNT ON
DECLARE @retCatIds TABLE (ID INT UNIQUE NOT NULL)
DECLARE @WorkIds TABLE (ID INT)
DECLARE @TempID int
DECLARE @ErrorTemp int
SET @TempID = 25
WHILE @TempID IS NOT NULL
BEGIN
INSERT INTO @retCatIds(ID) VALUES(@TempID)
SET @ErrorTemp = @@ERROR
IF (@ErrorTemp <> 0)
BREAK
INSERT INTO @WorkIds SELECT ChildId FROM DocumentReferences WHERE ParentID = @TempID
-- hämta nästa id att jobba med, nulla först
SET @TempID = NULL
SELECT @TempID = ID FROM @WorkIds
DELETE @WorkIds WHERE ID = @TempID
END
SELECT ID FROM @retCatIds
</code>
/Johan