Home > Database > Mysql Tutorial > How to Efficiently Insert Data into Multiple SQL Server Tables Simultaneously?

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

Mary-Kate Olsen
Release: 2025-01-04 05:01:40
Original
390 people have browsed it

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

Simultaneous Insertion into Multiple SQL Server Tables

Inserting data into multiple tables simultaneously can be a challenge, especially when the tables have foreign key relationships. A common approach is using the INSERT-SELECT-INSERT method, which involves inserting data into the first table, retrieving the primary key, and then inserting that key into the second table.

However, this method can become inefficient for large-scale insertions. For such scenarios, SQL Server provides an alternative solution:

insert into [table1] ([data])
output inserted.id, inserted.data into table2
select [data] from [external_table]
Copy after login

This query inserts data into both tables in a single transaction. The OUTPUT clause retrieves the inserted primary key and data from the first table and inserts them into the second table.

Example:

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];
Copy after login

This query will insert data from the external table into both table1 and table2 in a single operation. The data in table1 will be used to create the foreign key relationship in table2.

Handling Different Data Columns:

In some scenarios, the data columns in the source and destination tables may differ. In this case, the MERGE statement can be used:

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];
Copy after login

This query performs an upsert operation, inserting rows into table1 that do not already exist, and updating existing rows. The OUTPUT clause retrieves the inserted primary key and the corresponding data from the external table and inserts them into table2.

The above is the detailed content of How to Efficiently Insert Data into Multiple SQL Server Tables Simultaneously?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template