Heim >Datenbank >MySQL-Tutorial >Wie kann die MERGE-Anweisung generierte Identitäts- und Quelldaten in SQL Server-INSERT-Vorgängen abrufen?

Wie kann die MERGE-Anweisung generierte Identitäts- und Quelldaten in SQL Server-INSERT-Vorgängen abrufen?

Barbara Streisand
Barbara StreisandOriginal
2024-12-29 15:54:12994Durchsuche

How Can MERGE Statement Retrieve Generated Identity and Source Data in SQL Server INSERT Operations?

Einfügen in... Zusammenführen... Wählen Sie: MERGE verwenden, um generierte Identität abzurufen

In SQL Server ist INSERT... Die SELECT-Anweisung ermöglicht das Einfügen von Daten aus einer anderen Tabelle oder Abfrage in eine Zieltabelle. Beim Extrahieren von Werten aus mehreren Quellen gibt es jedoch Einschränkungen. Eine Lösung besteht in der Verwendung der MERGE-Anweisung, die den Abruf sowohl von eingefügten Daten als auch von Quelldaten ermöglicht.

Betrachten Sie zur Veranschaulichung die folgende Situation:

INSERT INTO Table3 (Spalte2, Spalte3, Spalte4, Spalte5)<br>SELECT null, 110, Table1.ID, Table2.Column2<br>FROM Table1</p>
<pre class="brush:php;toolbar:false"> JOIN Table1Table2Link on Table1.ID=Table1Table2Link.Column1
 JOIN Table2 on Table1Table2Link.Column2=Table2.ID

Es besteht die Notwendigkeit, die generierte Identität (Inserted.ID) aus Table3 und Table2.ID zu erfassen und einzufügen in eine temporäre Tabelle oder Variable. Obwohl die OUTPUT-Klausel häufig für diesen Zweck verwendet wird, kann sie keine Daten aus verschiedenen Tabellen extrahieren.

Die Lösung besteht darin, MERGE anstelle von INSERT...SELECT zum Auffüllen der Tabelle zu verwenden. Dies ermöglicht den Zugriff auf sowohl eingefügte als auch Quellwerte in der Ausgabeklausel:

MERGE INTO Table3 USING<br>(</p>
<pre class="brush:php;toolbar:false">SELECT null as col2, 
       110 as col3, 
       Table1.ID as col4, 
       Table2.Column2 as col5,
       Table2.Id as col6
FROM Table1
JOIN Table1Table2Link on Table1.ID=Table1Table2Link.Column1
JOIN Table2 on Table1Table2Link.Column2=Table2.ID

) AS s ON 1 = 0 -- Immer nicht übereinstimmend
WENN NICHT ÜBEREINSTIMMUNG DANN
INSERT (Spalte2, Spalte3, Spalte4, Column5)
VALUES (s.col2, s.col3, s.col4, s.col5)
OUTPUT Inserted.ID, s.col6
INTO @MyTableVar (insertedId, Table2Id);

Durch die Verwendung von MERGE kann die OUTPUT-Klausel sowohl die eingefügte Identität (Inserted.ID) als auch den Wert aus Tabelle2 (Table2.ID) abrufen und diese zur weiteren Verwendung in @MyTableVar einfügen Verarbeitung.

Das obige ist der detaillierte Inhalt vonWie kann die MERGE-Anweisung generierte Identitäts- und Quelldaten in SQL Server-INSERT-Vorgängen abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn