Heim >Datenbank >MySQL-Tutorial >Wie rufe ich Identitätswerte nach dem Masseneinfügen von Datensätzen in SQL Server ohne Cursor ab?

Wie rufe ich Identitätswerte nach dem Masseneinfügen von Datensätzen in SQL Server ohne Cursor ab?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-03 17:11:40710Durchsuche

How to Retrieve Identity Values After Bulk Inserting Records in SQL Server without Cursors?

Masseneinfügung von Datensätzen und Abrufen von Identitätswerten ohne Cursor

Das Einfügen mehrerer Datensätze in eine Tabelle ist eine häufige Aufgabe bei der Datenbankprogrammierung. Insbesondere beim Kopieren von Daten von einer Tabelle in eine andere ist es wünschenswert, die generierten Identitätswerte für die neuen Datensätze zu erhalten. In dieser Hinsicht bietet Microsoft SQL Server 2005 mithilfe der OUTPUT-Klausel eine effiziente Lösung.

Unter Berücksichtigung des bereitgestellten Codeausschnitts, in dem Daten aus Tabelle B in Tabelle A eingefügt werden:

Create Table A (id int identity, Fname nvarchar(50), Lname nvarchar(50))
Create Table B (Fname nvarchar(50), Lname nvarchar(50), NewId int)
Insert into A(fname, lname)
SELECT fname, lname
FROM B

An Um die Identitätswerte der neu eingefügten Datensätze in Tabelle A abzurufen, können wir die folgende Technik anwenden:

Verwenden Sie OUTPUT Klausel

Mit der OUTPUT-Klausel können wir die Werte abrufen, die während eines Einfüge-, Aktualisierungs- oder Löschvorgangs generiert werden. In diesem Fall können wir es verwenden, um die Identitätswerte der eingefügten Zeilen zu erfassen.

DECLARE @output TABLE (id int)

Insert into A (fname, lname)
OUTPUT inserted.ID INTO @output
SELECT fname, lname FROM B

Indem wir eine Tabellenvariable (@output) erstellen und den OUTPUT-insert.ID-Ausdruck angeben, weisen wir die Abfrage an Geben Sie die Identitätswerte der eingefügten Datensätze in @output zurück.

Abfragen der Tabellenvariablen

Nach dem Einfügen Nachdem der Vorgang abgeschlossen ist, können wir die Tabellenvariable @output abfragen, um die Identitätswerte zu erhalten:

select * from @output

Dadurch wird eine Tabelle mit einer Spalte (id) angezeigt, die die Identitätswerte der neu eingefügten Datensätze enthält. Diese Werte können dann bei Bedarf zum Aktualisieren der entsprechenden Datensätze in Tabelle B verwendet werden.

Das obige ist der detaillierte Inhalt vonWie rufe ich Identitätswerte nach dem Masseneinfügen von Datensätzen in SQL Server ohne Cursor ab?. 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