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
Freigeben: 2024-12-29 15:54:12
Original
996 Leute haben es durchsucht

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>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"> JOIN Table1Table2Link on Table1.ID=Table1Table2Link.Column1
 JOIN Table2 on Table1Table2Link.Column2=Table2.ID
Nach dem Login kopieren

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>
<div class="code" style="position:relative; padding:0px; margin:0px;"><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
Nach dem Login kopieren

) 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!

Quelle:php.cn
Vorheriger Artikel:Wie wähle ich Daten aus mehreren Tabellen mit identischen, mehrdeutigen Spalten aus? Nächster Artikel:Können Spaltennamen als Eingabeparameter in Java PreparedStatements verwendet werden?
Erklärung dieser Website
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
Neueste Artikel des Autors
Aktuelle Ausgaben
verwandte Themen
Mehr>
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage