Adakah SQL Server Menawarkan Ciri Serupa dengan MySQL ON DUPLICATE KEY UPDATE?
Dalam MySQL, ON DUPLICATE KEY UPDATE membenarkan kemas kini automatik baris apabila sisipan akan menyebabkan nilai pendua dalam indeks unik atau kunci utama. Dalam SQL Server, persamaan yang paling hampir dengan ciri ini ialah pernyataan MERGE.
Menggunakan MERGE untuk Kemas Kini atau Sisip
Pernyataan MERGE menggabungkan fungsi INSERT, UPDATE, dan PADAM kenyataan ke dalam satu operasi. Ia boleh digunakan untuk:
Contoh
Pertimbangkan pertanyaan berikut, yang cuba memasukkan baris ke dalam jadual jika baris itu belum wujud:
INSERT INTO MyTable (Id, Name) VALUES (1, 'John Doe')
Jika baris dengan Id 1 sudah wujud, pertanyaan ini akan gagal disebabkan pelanggaran kunci utama. Walau bagaimanapun, kita boleh menggunakan MERGE untuk mengendalikan senario ini:
MERGE INTO MyTable WITH (HOLDLOCK) AS target USING (SELECT 1 AS Id, 'John Doe' AS Name) AS source (Id, Name) ON (target.Id = source.Id) WHEN MATCHED THEN UPDATE SET Name = source.Name WHEN NOT MATCHED THEN INSERT (Id, Name) VALUES (source.Id, source.Name);
Dalam contoh ini, pernyataan MERGE akan melakukan tindakan berikut:
Klausa WITH (HOLDLOCK) memastikan jadual sasaran dikunci semasa operasi untuk menghalang kemas kini serentak daripada menyebabkan isu ketekalan data.
Atas ialah kandungan terperinci Adakah Terdapat Pelayan SQL Setara dengan MySQL ON DUPLICATE KEY UPDATE?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!