Rumah > pangkalan data > tutorial mysql > Adakah Terdapat Pelayan SQL Setara dengan MySQL ON DUPLICATE KEY UPDATE?

Adakah Terdapat Pelayan SQL Setara dengan MySQL ON DUPLICATE KEY UPDATE?

Linda Hamilton
Lepaskan: 2024-12-15 18:41:11
asal
396 orang telah melayarinya

Is There an SQL Server Equivalent to MySQL's ON DUPLICATE KEY UPDATE?

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:

  • Mengemas kini baris sedia ada yang sepadan dengan syarat yang ditetapkan
  • Memasukkan baris baharu jika tiada baris yang sepadan ditemui

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

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

Dalam contoh ini, pernyataan MERGE akan melakukan tindakan berikut:

  • Semak sama ada baris dengan Id 1 wujud dalam jadual sasaran.
  • Jika baris yang sepadan wujud, kemas kini lajur Nama kepada John Doe.
  • Jika tiada baris yang sepadan wujud, masukkan baris baharu dengan Id 1 dan Nama John Doe.

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan