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