Verwenden Sie einzigartige Einschränkungen, um doppelte Datensätze zu verhindern
]In Datenbankoperationen ist es häufig erforderlich, die Einzigartigkeit bestimmter Spaltenkombinationen zu gewährleisten. Betrachten Sie beispielsweise die folgende Tabelle:
ID | Name | Active | PersonNumber
Fügen Sie vorhandenen Tabellen eindeutige Einschränkungen hinzu
]] Um einer vorhandenen Tabelle eine eindeutige Einschränkung hinzuzufügen, können Sie eine der folgenden Methoden verwenden:
1.
ändern table dbo.yourtableName Hinzufügen von Einschränkungen uq_yourtableName Unique (Spalte1, Spalte2);
ALTER TABLE dbo.yourtablename
ADD CONSTRAINT uq_yourtablename UNIQUE(column1, column2);
Erstellen Sie eindeutige Index uq_yourtableName
Auf dbo.yourtableName (column1, columne2); Verwenden Sie Trigger, um wiederholte Einfügen zu verhindern
CREATE UNIQUE INDEX uq_yourtablename
ON dbo.yourtablename(column1, column2);
Erstellen Sie Trigger dbo.blockDuplicateSyourTable Auf dbo.yourtable Anstelle von Einfügen ALS BEGINNEN NoCount einstellen; Wenn nicht existiert ( Wählen Sie 1 Von eingefügt wie ich Innere mit DBO.YOURTABLE AS T Auf i.column1 = t.column11 Und I. column2 = t.column22 ) BEGINNEN Fügen Sie dbo.yourtable ein (Spalte1, Spalte2, ...) Wählen Sie Spalte1, Spalte2, ... aus dem eingefügten; ENDE ANDERS BEGINNEN Print 'Es wurde keine Aktion ausgeführt. '; ENDE ENDE; GEHEN
Beispiel: Implementieren Sie die Einzigartigkeit für PersonNumber und Active
CREATE TRIGGER dbo.BlockDuplicatesYourTable
ON dbo.YourTable
INSTEAD OF INSERT
AS
BEGIN
SET NOCOUNT ON;
IF NOT EXISTS (
SELECT 1
FROM inserted AS i
INNER JOIN dbo.YourTable AS t
ON i.column1 = t.column1
AND i.column2 = t.column2
)
BEGIN
INSERT dbo.YourTable(column1, column2, ...)
SELECT column1, column2, ... FROM inserted;
END
ELSE
BEGIN
PRINT '未执行任何操作。'; -- 更友好的提示信息
END
END;
GO
verwenden tempdb; GEHEN Erstellen Sie Tabelle dbo.person ( ID INT -Identität (1,1) Primärschlüssel, Name Nvarchar (32), Aktives Stück, PersonNumber int ); GEHEN TABELLE TABELLE DBO.PERSON Fügen Sie die Einschränkung uq_person einzigartig hinzu (PersonNumber, aktiv); GEHEN
Nun fällt jeder Einfügungsversuch, der gegen die eindeutige Einschränkung verstößt, mit einer Fehlermeldung fehl, um sicherzustellen, dass es keinen doppelten Datensatz mit derselben Personnummer und den aktiven Zuständen gibt.
drucken 'Es wurde keine Aktion ausgeführt. Die Anweisung 'USE tempdb;
GO
CREATE TABLE dbo.Person
(
ID INT IDENTITY(1,1) PRIMARY KEY,
Name NVARCHAR(32),
Active BIT,
PersonNumber INT
);
GO
ALTER TABLE dbo.Person
ADD CONSTRAINT uq_Person UNIQUE(PersonNumber, Active);
GO
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3