Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Melakukan Operasi Upsert dalam Oracle Menggunakan MERGE?
Oracle Upsert: Mengemas kini atau Memasukkan Data dengan Cekap
Masalah:
Bagaimana anda boleh melakukan operasi upsert dalam Oracle—mengemas kini rekod jika wujud atau memasukkan yang baharu jika tiada?
Penyelesaian: MERGE
Kenyataan
Oracle tidak mempunyai perintah UPSERT khusus. Pernyataan MERGE
menyediakan fungsi ini. Ia menggabungkan operasi kemas kini dan sisipan dengan cekap berdasarkan syarat gabungan.
Contoh Ilustrasi
Contoh ini mempamerkan upsert menggunakan pernyataan MERGE
dalam prosedur tersimpan:
<code class="language-sql">CREATE OR REPLACE PROCEDURE upsert_data (p_id NUMBER, p_value NUMBER) AS BEGIN MERGE INTO my_table target USING dual source ON (target.id = p_id) WHEN MATCHED THEN UPDATE SET target.value = p_value WHEN NOT MATCHED THEN INSERT (id, value) VALUES (p_id, p_value); END; / -- Sample usage and verification CREATE TABLE my_table (id NUMBER PRIMARY KEY, value NUMBER); BEGIN upsert_data(1, 10); upsert_data(1, 20); -- Update existing row upsert_data(2, 30); -- Insert new row END; / SELECT * FROM my_table;</code>
Prosedur ini, upsert_data
, mengambil ID dan nilai. Penyataan MERGE
membandingkan p_id
yang disediakan dengan ID sedia ada dalam my_table
.
WHEN MATCHED
: Jika padanan ditemui, lajur value
dikemas kini kepada p_value
.WHEN NOT MATCHED
: Jika tiada padanan ditemui, baris baharu dimasukkan dengan p_id
dan p_value
yang diberikan.Pernyataan akhir SELECT
menunjukkan hasil kemas kini gabungan dan sisipan. Pendekatan ini cekap dan mengelakkan keperluan untuk pernyataan UPDATE
dan INSERT
berasingan dengan semakan bersyarat.
Atas ialah kandungan terperinci Bagaimana untuk Melakukan Operasi Upsert dalam Oracle Menggunakan MERGE?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!