3 Stimmen

Verwenden Sie INSERT-OUTPUT, um Werte für ein anderes INSERT bereitzustellen

Guten Tag,

Ich habe mich gefragt, ob es möglich ist, eine INSERT-OUTPUT-Anweisung so zu verwenden, dass sie den Wert bzw. die Werte für eine andere, äußere INSERT-Anweisung liefert. Auf diese Weise können Werte zu einer Entitätstabelle und einer Kreuzungstabelle in einer einzigen Anweisung hinzugefügt werden - ich hoffe, ich habe das richtig formuliert. Zum Beispiel:

INSERT INTO [#tblIntersect] ([Entity1ID], [Entity2ID])
VALUES
(
    INSERT INTO [#tblEntity1] ([Value])
    OUTPUT [inserted].[ID] AS [entity1ID], @entity2ID AS [entity2ID]
    VALUES ('One')
)

Die innere INSERT-OUTPUT-Anweisung fügt also eine neue Entität zur Tabelle #tblEntity1 . Das neue Unternehmen ID (die als IDENTITY(1, 1) wird dann über die OUTPUT Anweisung, zusammen mit einem statischen Wert (den ich bereits in meinem Code habe), um die beiden Werte für die äußere INSERT Erklärung.

Der Grund, warum ich denke, dass es möglich sein könnte, ist, dass die Ausführung der inneren INSERT-OUTPUT Anweisung selbst gibt ohnehin eine Tabelle zurück, und eine solche Ausgabe kann normalerweise verwendet werden, um Werte für INSERT Erklärungen.

Offensichtlich funktioniert dieses Beispiel nicht; ich hatte gehofft, dass es sich nur um ein einfaches Syntaxproblem handelt.

Ich danke Ihnen im Voraus für alle Kommentare und Ratschläge.

1voto

Phil Punkte 40767

Ihre Anforderung ist möglich nach der Dokumentation .

Unter der Annahme, dass #tblIntersect zwei übereinstimmende id-Spalten hat, sollte dies funktionieren

INSERT INTO [#tblEntity1] ([Value])
OUTPUT [inserted].[ID] AS [entity1ID], @entity2ID AS [entity2ID]
   INTO #tblIntersect
VALUES ('One')

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X