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?
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
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.
Tags und Links sql sql-server-2008