Pernyataan MERGE Pelayan SQL: Alternatif Serbaguna kepada ON DUPLICATE KEY KEMASKINI MySQL
Dalam MySQL, klausa ON DUPLICATE KEY UPDATE membenarkan untuk pengubahsuaian baris sedia ada apabila memasukkan data ke dalam jadual dengan indeks UNIK atau KUNCI UTAMA. Walaupun SQL Server tidak mempunyai persamaan yang tepat, pernyataan MERGE menawarkan penyelesaian yang berkuasa dan fleksibel untuk mengendalikan data pendua.
Memperkenalkan Pernyataan MERGE
Pernyataan MERGE menggabungkan kefungsian INSERT dan UPDATE pernyataan ke dalam satu operasi. Ia menilai syarat yang ditentukan untuk menentukan sama ada untuk memasukkan baris baharu atau mengemas kini yang sedia ada. Sintaks untuk pernyataan MERGE asas ialah:
MERGE INTO target_table AS target USING source_table AS source ON (target.column_name = source.column_name) WHEN MATCHED THEN UPDATE SET target.column_name = source.column_name WHEN NOT MATCHED THEN INSERT (target.column_names) VALUES (source.column_values)
Contoh Penggunaan
Untuk menggambarkan penggunaan pernyataan MERGE untuk mengendalikan data pendua, pertimbangkan contoh berikut:
MERGE INTO MyBigDB.dbo.METER_DATA WITH (HOLDLOCK) AS target USING (SELECT 77748 AS rtu_id ,'12B096876' AS meter_id ,56112 AS meter_reading ,'20150602 00:20:11' AS time_local) AS source (rtu_id, meter_id, meter_reading, time_local) ON (target.rtu_id = source.rtu_id AND target.time_local = source.time_local) WHEN MATCHED THEN UPDATE SET meter_id = '12B096876' ,meter_reading = 56112 WHEN NOT MATCHED THEN INSERT (rtu_id, meter_id, meter_reading, time_local) VALUES (77748, '12B096876', 56112, '20150602 00:20:11');
Dalam contoh ini, pernyataan MERGE cuba memasukkan baris baharu ke dalam Jadual MyBigDB.dbo.METER_DATA menggunakan data daripada jadual sumber. Jika baris dengan nilai rtu_id dan time_local yang sama sudah wujud, pernyataan mengemas kini baris tersebut dengan nilai yang ditentukan untuk meter_id dan meter_reading. Jika tidak, pernyataan itu memasukkan baris baharu ke dalam jadual.
Kelebihan Pernyataan MERGE
Berbanding klausa ON DUPLICATE KEY UPDATE dalam MySQL, pernyataan MERGE dalam SQL Pelayan menawarkan beberapa kelebihan:
Atas ialah kandungan terperinci Bagaimanakah Pernyataan MERGE SQL Server Berbanding dengan MySQL ON DUPLICATE KEY UPDATE?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!