Pemasukan Serentak ke dalam Berbilang Jadual Pelayan SQL
Memasukkan data ke dalam berbilang jadual secara serentak boleh menjadi satu cabaran, terutamanya apabila jadual mempunyai hubungan utama asing . Pendekatan biasa ialah menggunakan kaedah INSERT-SELECT-INSERT, yang melibatkan memasukkan data ke dalam jadual pertama, mendapatkan semula kunci utama dan kemudian memasukkan kunci itu ke dalam jadual kedua.
Walau bagaimanapun, kaedah ini boleh menjadi tidak cekap untuk sisipan berskala besar. Untuk senario sedemikian, SQL Server menyediakan penyelesaian alternatif:
insert into [table1] ([data]) output inserted.id, inserted.data into table2 select [data] from [external_table]
Pertanyaan ini memasukkan data ke dalam kedua-dua jadual dalam satu transaksi. Klausa OUTPUT mengambil kunci utama dan data yang dimasukkan daripada jadual pertama dan memasukkannya ke dalam jadual kedua.
Contoh:
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];
Pertanyaan ini akan memasukkan data daripada jadual luaran ke dalam kedua-dua jadual1 dan jadual2 dalam satu operasi. Data dalam jadual1 akan digunakan untuk mencipta hubungan kunci asing dalam jadual2.
Mengendalikan Lajur Data Berbeza:
Dalam sesetengah senario, lajur data dalam sumber dan jadual destinasi mungkin berbeza. Dalam kes ini, pernyataan MERGE boleh digunakan:
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];
Pertanyaan ini menjalankan operasi tambah, memasukkan baris ke dalam jadual1 yang belum wujud dan mengemas kini baris sedia ada. Klausa OUTPUT mengambil kunci utama yang dimasukkan dan data yang sepadan daripada jadual luaran dan memasukkannya ke dalam jadual2.
Atas ialah kandungan terperinci Bagaimana untuk Memasukkan Data dengan Cekap ke dalam Jadual Pelayan SQL Berbilang Secara serentak?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!