Sie die SCOPE_IDENTITY()
Funktion können Sie die zuletzt eingefügten Autoinkrement-ID abzurufen:
DECLARE @new_parent_id INT
INSERT INTO MyParent(...) VALUES(...) -- your new parent data
SELECT @new_parent_id = SCOPE_IDENTITY()
INSERT INTO MyChild(parent_id, ...) VALUES(@new_parent_id, ...)
Ist das, was Sie meinen ?
EDIT:
http://msdn.microsoft.com/en-us/library/bb675163.aspx
Sie passieren könnten in Ihren Eltern:
Sie tatsächlich in allen Daten auf einmal mit ADO.NET und SQL Server 2008 unter Verwendung von Tabelle Wertparametern passieren können und Kinddaten als zwei Tabellen zu Ihrer gespeicherten Prozedur, dann benutzen Sie einen Cursor, um Ihre Eltern zu durchlaufen, einen einzufügen, die generierte ID zu bekommen und dann alle Kinder einzufügen, bevor Sie zum nächsten Elternteil übergehen.
Dies wäre wahrscheinlich die effizienteste Lösung, die möglicherweise nur einen einzigen Aufruf an die Datenbank erfordert und wenn Sie eine große Datenmenge einfügen müssen oder wenn Sie dieses SP an anderen Stellen in Ihrer Lösung verwenden möchten , dann könnte das der richtige Weg sein.
Ich denke jedoch, dass das Einfügen der Datensätze eins nach dem anderen aus der Client-Anwendung eine sauberere und sicherlich eine einfachere Möglichkeit, das zu erreichen, was Sie wollen.
In welcher Form existieren die einzufügenden Elemente in Ihrem System * vor * zum Einfügen? Wie sind sie verbunden? Wenn es eine Möglichkeit gäbe, * alle * Elemente in einem einzigen Aufruf an einen SP zu übergeben, wären Sie in der Lage, ihre Links (wie temporäre IDs) zusammen mit den Namen und anderen Eigenschaften weiterzugeben? –