Bagaimana untuk Mencegah Rekod Pendua dalam Operasi SQL INSERT Menggunakan MERGE?

Susan Sarandon
Lepaskan: 2024-10-29 03:46:29
asal
343 orang telah melayarinya

How to Prevent Duplicate Records in SQL INSERT Operations Using MERGE?

Mengurangkan Rekod Pendua dalam Operasi INSERT SQL

Banyak sistem pangkalan data menyediakan mekanisme untuk menghalang rekod pendua daripada dimasukkan ke dalam jadual. Dalam kes ini, anda perlu berhati-hati terhadap sisipan pendua dalam jadual yang dipanggil "Wakil" yang mengandungi medan berikut:

  • ID (Autokenaikan, Utama)
  • No Ahli
  • FromYr
  • ToYr

Anda sedang melakukan sisipan menggunakan pertanyaan berikut:

<code class="sql">INSERT INTO Delegates ([MemNo],[FromYr],[ToYr]) values(@MemNo, @FromYr,@ToYr)</code>
Salin selepas log masuk

Walau bagaimanapun, pendekatan ini tidak menghalang pengguna daripada tersilap memasukkan rekod pendua untuk ahli dan tahun yang sama.

Penyelesaian Menggunakan MERGE

Untuk mengelakkan sisipan pendua, anda boleh menggunakan pernyataan MERGE, yang menyediakan cara yang mudah untuk melaksanakan berbilang operasi (masukkan, kemas kini atau padam) berdasarkan perbandingan antara dua jadual atau jadual dan set nilai.

Dalam kes ini, pernyataan MERGE boleh digunakan seperti berikut:

<code class="sql">MERGE INTO Delegates D
USING (values(@MemNo, @FromYr,@ToYr)) X ([MemNo],[FromYr],[ToYr])
ON (insert unique key join)
WHEN NOT MATCHED BY TARGET THEN
INSERT ([MemNo],[FromYr],[ToYr]))
VALUES (X.[MemNo],X.[FromYr],X.[ToYr]);</code>
Salin selepas log masuk

Pernyataan ini mencapai perkara berikut:

  • Klausa USING menentukan nilai yang akan dimasukkan atau dibandingkan dengan rekod sedia ada.
  • Klausa ON mentakrifkan syarat cantum yang mengenal pasti sedia ada secara unik rekod. Dalam kes ini, anda boleh menggunakan gabungan medan yang sesuai untuk memastikan keunikan (cth., MemberNo dan FromYr).
  • Klausa WHEN NOT MATCHED BY TARGET menyatakan bahawa operasi sisipan harus berlaku hanya jika tiada rekod sepadan ditemui dalam jadual sedia ada.
  • Klausa VALUES menyediakan nilai untuk dimasukkan jika rekod yang sepadan tidak ditemui.

Atas ialah kandungan terperinci Bagaimana untuk Mencegah Rekod Pendua dalam Operasi SQL INSERT Menggunakan MERGE?. 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!