Rumah >pangkalan data >tutorial mysql >Bagaimanakah Pernyataan MERGE Boleh Mendapatkan Identiti Dijana dan Data Sumber dalam Operasi INSERT Pelayan SQL?

Bagaimanakah Pernyataan MERGE Boleh Mendapatkan Identiti Dijana dan Data Sumber dalam Operasi INSERT Pelayan SQL?

Barbara Streisand
Barbara Streisandasal
2024-12-29 15:54:121005semak imbas

How Can MERGE Statement Retrieve Generated Identity and Source Data in SQL Server INSERT Operations?

Sisipkan ke dalam... Gabung... Pilih: Menggunakan MERGE untuk Mendapatkan Identiti Dijana

Dalam Pelayan SQL, INSERT... Pernyataan SELECT membenarkan pemasukan data ke dalam jadual sasaran daripada jadual atau pertanyaan lain. Walau bagaimanapun, ia mempunyai had apabila mengekstrak nilai daripada pelbagai sumber. Penyelesaian wujud dengan menggunakan pernyataan MERGE, yang membolehkan pengambilan kedua-dua data yang dimasukkan dan sumber.

Untuk menggambarkan, pertimbangkan situasi berikut:

MASUKKAN KE DALAM Jadual3 (Lajur2, Lajur3, Lajur4, Lajur5)
PILIH nol, 110, Jadual1.ID, Jadual2.Lajur2
DARI Jadual1

 JOIN Table1Table2Link on Table1.ID=Table1Table2Link.Column1
 JOIN Table2 on Table1Table2Link.Column2=Table2.ID

Timbul keperluan untuk menangkap identiti yang dijana (Inserted.ID) daripada Jadual3 dan Jadual2. ID dan masukkannya ke dalam jadual atau pembolehubah sementara. Walaupun klausa OUTPUT biasanya digunakan untuk tujuan ini, ia tidak boleh mengekstrak data daripada jadual yang berbeza.

Penyelesaian terletak pada penggunaan MERGE untuk mengisi jadual dan bukannya INSERT...SELECT. Ini membenarkan akses kepada kedua-dua nilai yang disisipkan dan sumber dalam klausa output:

GABUNG KE DALAM Jadual3 MENGGUNAKAN<br>(</p>
<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

) AS s ON 1 = 0 -- Sentiasa tidak dipadankan
APABILA TIDAK DIPADAKAN MAKA
INSERT (Lajur2, Column3, Column4, Column5)
VALUES (s.col2, s.col3, s.col4, s.col5)
OUTPUT Inserted.ID, s.col6
INTO @MyTableVar (insertedId, Table2Id);

Dengan menggunakan MERGE, klausa OUTPUT boleh mendapatkan kedua-dua identiti yang dimasukkan (Inserted.ID) dan nilai daripada Jadual2 (Table2.ID) dan memasukkannya ke dalam @MyTableVar untuk selanjutnya pemprosesan.

Atas ialah kandungan terperinci Bagaimanakah Pernyataan MERGE Boleh Mendapatkan Identiti Dijana dan Data Sumber dalam Operasi INSERT Pelayan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn