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

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

Susan Sarandon
Susan SarandonOriginal
2024-10-29 03:46:29422Durchsuche

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>

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>

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!

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