Ich habe einen rekursiven CTE, die mir eine Auflistung einer Reihe von Eltern-Kind-Schlüssel gibt wie folgt, seinen Namen in einer temporären Tabelle kann sagen, [#relationtree]:Wie können wir eine Kopie der Struktur rekursiv in eine andere Tabelle einfügen, wenn wir eine Eltern/Kind-Schlüsseltabelle verwenden?
Parent | Child
--------------
1 | 3
3 | 5
5 | 6
5 | 9
Ich mag eine Kopie davon erstellen Beziehungen in eine Tabelle mit, sagen wir mal, die folgende stucture:
CREATE TABLE [dbo].[Relations]
(
[Id] int identity(1,1)
[ParentId] int
)
wie kann ich die oben genannten Aufzeichnungen aber rekursiv erhalten, um den zuvor eingefügten Identitätswert einsetzen, diesen Wert als ParentId Spalte einfügen zu können, für jede Kopie von ein Kind, das ich einfüge?
Ich würde erwarten, am Ende dieses haben in [dbo]. [Beziehungen] (angesichts unserer aktuellen Startwert ist, sagen 50)
Id | ParentId
-------------
... other rows present before this query ...
50 | NULL
51 | 50
52 | 51
53 | 51
Ich bin nicht sicher, dass scope_identity arbeiten können Diese Situation oder das Erstellen einer neuen temporären Tabelle mit einer Liste neuer IDs und das manuelle Einfügen von Identitätsspalten ist der richtige Ansatz?
Ich könnte einen Cursor/eine Schleife schreiben, um dies zu tun, aber es muss eine gute Möglichkeit geben, einige rekursive Auswahl Magie zu tun!
sorry, ich zweimal durch Ihre Frage ging, aber nicht in der Lage much..particularly dies herauszufinden Teil. "Wie kann ich die obigen Datensätze einfügen, aber rekursiv den zuvor eingefügten Identitätswert abrufen, um diesen Wert als die ParentId-Spalte für jede Kopie eines untergeordneten Elements einfügen zu können?" .Können Sie einige Beispieldaten der erwarteten Ausgabe mit einigen Beispiel-Eingabe – TheGameiswar