Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Mencegah Rekod Pendua dalam Operasi SQL INSERT Menggunakan MERGE?

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

Susan Sarandon
Susan Sarandonasal
2024-10-29 03:46:29344semak imbas

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>

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>

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!

Kenyataan:
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