Heim > Datenbank > MySQL-Tutorial > Hauptteil

Wie verhindert man doppelte Datensätze in SQL-INSERT-Operationen mithilfe von MERGE?

Susan Sarandon
Freigeben: 2024-10-29 03:46:29
Original
343 Leute haben es durchsucht

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

Reduzierung doppelter Datensätze in SQL-INSERT-Operationen

Viele Datenbanksysteme bieten Mechanismen, um zu verhindern, dass doppelte Datensätze in Tabellen eingefügt werden. In diesem Fall müssen Sie sich vor doppelten Einfügungen in einer Tabelle namens „Delegates“ schützen, die die folgenden Felder enthält:

  • ID (Auto-Inkrementierung, Primär)
  • MemberNo
  • VonJahr
  • BisJahr

Sie führen Einfügungen mit der folgenden Abfrage durch:

<code class="sql">INSERT INTO Delegates ([MemNo],[FromYr],[ToYr]) values(@MemNo, @FromYr,@ToYr)</code>
Nach dem Login kopieren

Dieser Ansatz verhindert jedoch nicht, dass Benutzer versehentlich etwas einfügen doppelte Datensätze für dasselbe Mitglied und Jahr.

Lösung mit MERGE

Um doppelte Einfügungen zu vermeiden, können Sie die MERGE-Anweisung verwenden, die eine bequeme Möglichkeit bietet, mehrere einzufügen Operationen (Einfügen, Aktualisieren oder Löschen) basierend auf einem Vergleich zwischen zwei Tabellen oder einer Tabelle und einer Menge von Werten.

In diesem Fall kann die MERGE-Anweisung wie folgt verwendet werden:

<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>
Nach dem Login kopieren

Diese Anweisung bewirkt Folgendes:

  • Die USING-Klausel gibt die Werte an, die eingefügt oder mit vorhandenen Datensätzen verglichen werden sollen.
  • Die ON-Klausel definiert die Join-Bedingung, die vorhandene eindeutig identifiziert Aufzeichnungen. In diesem Fall können Sie eine geeignete Kombination von Feldern verwenden, um die Eindeutigkeit sicherzustellen (z. B. MemberNo und FromYr).
  • Die WHEN NOT MATCHED BY TARGET-Klausel gibt an, dass ein Einfügevorgang nur dann erfolgen soll, wenn kein passender Datensatz gefunden wird in der vorhandenen Tabelle.
  • Die VALUES-Klausel liefert die Werte, die eingefügt werden sollen, wenn kein passender Datensatz gefunden wird.

Das obige ist der detaillierte Inhalt vonWie verhindert man doppelte Datensätze in SQL-INSERT-Operationen mithilfe von MERGE?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!