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
Lepaskan: 2024-12-29 15:54:12
asal
994 orang telah melayarinya

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
Salin selepas log masuk

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>
<div class="code" style="position:relative; padding:0px; margin:0px;"><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
Salin selepas log masuk

) 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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Cadangan popular
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan