SQL Server's Counterpart to MySQL ON DUPLICATE KEY UPDATE
Dalam MySQL, klausa ON DUPLICATE KEY UPDATE membenarkan pengguna mengemas kini baris sedia ada dan bukannya memasukkan yang baharu jika kunci pendua ditemui. Ciri ini amat berguna apabila menangani kekangan unik dan kunci utama.
Pernyataan MERGE Pelayan SQL
Walaupun SQL Server tidak mempunyai persamaan yang tepat dengan MySQL ON DUPLICATE KEY KEMASKINI, ia menyediakan pernyataan MERGE sebagai penyelesaian yang setanding. MERGE menggabungkan kefungsian INSERT, UPDATE dan DELETE pernyataan ke dalam satu pertanyaan, membolehkan pengendalian nilai pendua yang cekap.
Melaksanakan ON DUPLICATE KEY UPDATE Menggunakan MERGE
Untuk melaksanakan tingkah laku pada-pendua-kemas kini dalam SQL Server, anda boleh menggunakan yang berikut sintaks:
MERGE INTO [target_table] AS target USING [source_table] AS source ON (target.[matching_column] = source.[matching_column]) WHEN MATCHED THEN UPDATE SET [target_column] = [source_column] WHEN NOT MATCHED THEN INSERT ([target_column]) VALUES ([source_column]);
Contoh
Pertimbangkan pertanyaan berikut yang memasukkan data ke dalam jadual bernama METER_DATA dan mengemas kini nilai baris jika pendua wujud berdasarkan rtu_id dan time_local lajur:
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');
Pertanyaan ini akan memasukkan nilai daripada jadual sumber ke dalam jadual sasaran jika baris dengan rtu_id dan time_local yang sama belum wujud. Jika baris pendua wujud, kemas kini akan dilakukan sebaliknya, mengekalkan data sedia ada dalam jadual sasaran.
Atas ialah kandungan terperinci Bagaimanakah Pernyataan MERGE SQL Server Meniru MySQL ON DUPLICATE KEY UPDATE?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!