Heim  >  Artikel  >  Datenbank  >  Wie verhindert man doppelte Werte beim INSERT in SQL?

Wie verhindert man doppelte Werte beim INSERT in SQL?

Barbara Streisand
Barbara StreisandOriginal
2024-10-31 08:30:02867Durchsuche

How to Prevent Duplicate Values during INSERT in SQL?

Verhindern doppelter Werte beim INSERT in SQL

Angenommen eine Tabelle „Delegates“ mit den Spalten „ID“, „MemberNo“, „FromYr, „ und „ToYr“ muss der Benutzer das Einfügen doppelter Werte aus Benutzereingaben verhindern. Die ursprüngliche Abfrage, INSERT INTO Delegates ([MemNo],[FromYr],[ToYr]) Values(@MemNo, @FromYr,@ToYr), ermöglicht doppelte Einträge für dasselbe Mitglied und Jahr.

To Um dieses Problem zu beheben, kann der Benutzer den Befehl MERGE verwenden. MERGE kombiniert die Funktionalität von INSERT-, UPDATE- und DELETE-Anweisungen in einer einzigen Operation. Die folgende MERGE-Anweisung erreicht das gewünschte Verhalten:

<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 MERGE-Anweisung führt Folgendes aus:

  • Es wird zunächst versucht, die Zeilen in der Tabelle „Delegates“ (D ) mit den vom Benutzer bereitgestellten Werten (X).
  • Wenn eine Übereinstimmung gefunden wird (basierend auf der angegebenen Join-Bedingung, die ein eindeutiger Schlüssel sein sollte), wird die vorhandene Zeile aktualisiert.
  • Wenn keine Übereinstimmung gefunden wird, wird eine neue Zeile mit den Werten von

Das obige ist der detaillierte Inhalt vonWie verhindert man doppelte Werte beim INSERT in SQL?. 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