Durch das Erstellen eines EINZIGARTIGEN Zwang, geben SQL Server-Administratoren an, dass eine Datenbankspalte keine doppelten Werte enthalten darf. Wenn Sie ein neues UNIQUE erstellen Zwang, überprüft SQL Server die fragliche Spalte, um festzustellen, ob sie doppelte Werte enthält. Wenn die Tabelle Duplikate enthält, schlägt der Befehl zum Erstellen der Einschränkung fehl. Ebenso schlagen Versuche, Daten hinzuzufügen oder zu ändern, die Duplikate verursachen würden, fehl, nachdem Sie eine UNIQUE-Einschränkung für eine Spalte definiert haben.
Warum UNIQUE-Einschränkungen verwenden
Sowohl eine UNIQUE-Einschränkung als auch ein Primärschlüssel erzwingen die Eindeutigkeit, aber manchmal ist eine UNIQUE-Einschränkung die bessere Wahl.
- Verwenden Sie eine UNIQUE-Einschränkung, um mehrere Einschränkungen für eine Tabelle anzugeben. Sie können einer Tabelle nur einen Primärschlüssel zuordnen.
- Verwenden Sie eine UNIQUE-Einschränkung, wenn eine Spalte Nullwerte zulässt. Primärschlüsseleinschränkungen können nur an Spalten angehängt werden, die keine Nullwerte zulassen.
Erstellen einer EINZIGARTIGEN Einschränkung
Die einfachste Möglichkeit, eine eindeutige Einschränkung in Transact-SQL zu erstellen, besteht darin, im Objekt-Explorer in SQL Management Studio eine Verbindung zu einem Datenbankmodul herzustellen und dann auf Neue Abfrage.
Verwenden Sie die folgende Abfrage und ändern Sie die Begriffe nach Bedarf, um eine neue Tabelle zu erstellen und einer Spalte eine Einschränkung hinzuzufügen:
VERWENDEN SIE AdventureWorks2012;
GEHEN
TABELLE ERSTELLEN Produktion. TransactionHistoryArchive4
(
Transaktions-ID int NOT NULL,
CONSTRAINT AK_TransactionID UNIQUE(TransactionID)
);
GEHEN.
Führen Sie die Abfrage aus.
Führen Sie auf ähnliche Weise die folgende T-SQL-Abfrage aus, um eine eindeutige Einschränkung für eine vorhandene Tabelle zu erstellen:
VERWENDEN SIE AdventureWorks2012;
GEHEN
ALTER TABLE Person. Passwort
ADD CONSTRAINT AK_Password UNIQUE (PasswordHash, PasswordSalt);
GEHEN.
EINZIGARTIGE Einschränkungen vs. EINZIGARTIGE Indizes
Es gab einige Verwirrung über den Unterschied zwischen einer UNIQUE-Einschränkung und einem UNIQUE-Index. Sie können zwar verschiedene T-SQL-Befehle verwenden, um sie zu erstellen (ALTER TABLE und ADD CONSTRAINT für Einschränkungen und CREATE UNIQUE INDEX für Indizes), aber sie haben größtenteils die gleiche Wirkung. Wenn Sie eine UNIQUE-Einschränkung erstellen, wird tatsächlich ein UNIQUE-Index für die Tabelle erstellt. Beachten Sie jedoch einige Unterschiede:
- Wenn Sie einen Index erstellen, können Sie dem Erstellungsbefehl zusätzliche Optionen hinzufügen.
- Eine Spalte, die einer UNIQUE-Einschränkung unterliegt, kann als Unbekannter Schlüssel.