Heim > Datenbank > MySQL-Tutorial > Wie fügt man Daten effizient gleichzeitig in mehrere SQL Server-Tabellen ein?

Wie fügt man Daten effizient gleichzeitig in mehrere SQL Server-Tabellen ein?

Mary-Kate Olsen
Freigeben: 2025-01-04 05:01:40
Original
408 Leute haben es durchsucht

How to Efficiently Insert Data into Multiple SQL Server Tables Simultaneously?

Gleichzeitiges Einfügen in mehrere SQL Server-Tabellen

Das gleichzeitige Einfügen von Daten in mehrere Tabellen kann eine Herausforderung sein, insbesondere wenn die Tabellen Fremdschlüsselbeziehungen haben . Ein gängiger Ansatz ist die Verwendung der INSERT-SELECT-INSERT-Methode, bei der Daten in die erste Tabelle eingefügt, der Primärschlüssel abgerufen und dieser Schlüssel dann in die zweite Tabelle eingefügt werden.

Diese Methode kann jedoch ineffizient werden für großflächige Einfügungen. Für solche Szenarien bietet SQL Server eine alternative Lösung:

insert into [table1] ([data])
output inserted.id, inserted.data into table2
select [data] from [external_table]
Nach dem Login kopieren

Diese Abfrage fügt Daten in beide Tabellen in einer einzigen Transaktion ein. Die OUTPUT-Klausel ruft den eingefügten Primärschlüssel und die Daten aus der ersten Tabelle ab und fügt sie in die zweite Tabelle ein.

Beispiel:

CREATE TABLE [table1] (
  [id] [int] IDENTITY(1,1) NOT NULL,
  [data1] [varchar](255) NOT NULL,
  CONSTRAINT [PK_table1] PRIMARY KEY CLUSTERED ([id] ASC)
);

CREATE TABLE [table2] (
  [id] [int] IDENTITY(1,1) NOT NULL,
  [table1_id] [int] NOT NULL,
  [data2] [varchar](255) NOT NULL,
  CONSTRAINT [PK_table2] PRIMARY KEY CLUSTERED ([id] ASC)
);

INSERT INTO [table1] ([data1])
OUTPUT INSERTED.ID, INSERTED.DATA1 INTO [table2] ([table1_id], [data2])
SELECT [data1] FROM [external_table];
Nach dem Login kopieren

Diese Abfrage fügt Daten ein von der externen Tabelle in Tabelle1 und Tabelle2 in einem einzigen Vorgang. Die Daten in Tabelle 1 werden verwendet, um die Fremdschlüsselbeziehung in Tabelle 2 zu erstellen.

Umgang mit unterschiedlichen Datenspalten:

In einigen Szenarien werden die Datenspalten in der Quelle und Zieltabellen können unterschiedlich sein. In diesem Fall kann die MERGE-Anweisung verwendet werden:

MERGE INTO [table1] AS t
USING [external_table] AS s
ON 1=0 -- modify this predicate as necessary
WHEN NOT MATCHED THEN INSERT (data)
VALUES (s.[col1])
OUTPUT INSERTED.ID, s.[col2] INTO [table2];
Nach dem Login kopieren

Diese Abfrage führt einen Upsert-Vorgang durch, bei dem Zeilen in Tabelle1 eingefügt werden, die noch nicht vorhanden sind, und vorhandene Zeilen aktualisiert werden. Die OUTPUT-Klausel ruft den eingefügten Primärschlüssel und die entsprechenden Daten aus der externen Tabelle ab und fügt sie in Tabelle2 ein.

Das obige ist der detaillierte Inhalt vonWie fügt man Daten effizient gleichzeitig in mehrere SQL Server-Tabellen ein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage