Wie vermeidet man doppelte Werte für INSERT in SQL?

7

Ich habe eine Tabelle mit dem Namen:

%Vor%

Diese Tabelle hat vier Felder:

%Vor%

Ich füge mit dieser Abfrage ein:

%Vor%

Die Werte stammen von Benutzereingaben. Ein Mitglied kann ein Delegierter für jedes Jahr sein, deshalb erlaube ich ihnen, so einzugeben, wie sie wollen. Aber jetzt Problem sind sie können versehentlich ein Mitglied für das gleiche Jahr mehr als 2 mal einfügen. Bitte hilf mir, was kann ich jetzt hier machen?

    
barsan 03.07.2013, 08:12
quelle

6 Antworten

4

Prüfen Sie vor dem Einfügen, ob ein Datensatz mit den gleichen Werten vorhanden ist:

%Vor%     
gzaxx 03.07.2013, 08:16
quelle
17

Verwenden Sie MERGE

%Vor%     
gbn 03.07.2013 08:15
quelle
2

Versuchen Sie es (Ich habe es nicht überprüft)

%Vor%     
Hari Das 03.07.2013 08:19
quelle
2

Fügen Sie einfach einen eindeutigen Index für diese Spalte hinzu, und das Einfügen von Duplikaten führt zu einem Fehler. Sie können dann Fehler behandeln, wenn es ordnungsgemäß fehlschlägt

    
mattcornish 21.02.2018 15:39
quelle
1

Machen Sie eine gespeicherte Prozedur, die zuerst prüft, ob die Werte bereits im DB enthalten sind. Wenn sie nicht sind, werden Sie Ihren Einsatz machen. Wenn sie es einfach ignorieren

    
walsh06 03.07.2013 08:16
quelle
0

Sie können das Einfügen von Duplikaten mit dieser einfachen Codezeile vermeiden:

INSERT INTO Delegates (MemNo, FromYr, ToYr) SELECT @MemNo, @FromYr, @ToYr WHERE NOT EXISTS (SELECT 1 FROM Delegates d WHERE d.MemNo=@MemNo AND d.FromYr=@FromYr)

Wenn es sich um eine Hochlastumgebung handelt, in der ein anderer Befehl das Duplikat einfügen könnte, während dieser Befehl ausgeführt wird, können Sie den WITH(HOLDLOCK) -Hinweis verwenden.

    
Doug S 05.10.2015 03:26
quelle

Tags und Links