Ved at skabe en UNIK begrænsning, SQL Server-administratorer angiver, at en databasekolonne muligvis ikke indeholder duplikatværdier. Når du opretter en ny UNIK begrænsning, SQL Server kontrollerer den pågældende kolonne for at afgøre, om den indeholder duplikatværdier. Hvis den bord indeholder dubletter, kommandoen til oprettelse af begrænsning mislykkes. Når du har defineret en UNIK begrænsning på en kolonne, mislykkes også forsøg på at tilføje eller ændre data, der ville få duplikater til at eksistere.
Hvorfor bruge UNIQUE begrænsninger
En UNIK begrænsning og en primær nøgle håndhæver begge unikke, men der er tidspunkter, at en UNIK begrænsning er det bedre valg.
- Brug en UNIK begrænsning til at angive flere begrænsninger for en tabel. Du kan kun vedhæfte en primær nøgle til en tabel.
- Brug en UNIK begrænsning, når en kolonne tillader nulværdier. Primære nøglebegrænsninger kan kun knyttes til kolonner, der ikke tillader nulværdier.
Oprettelse af en UNIK begrænsning
Den nemmeste måde at oprette en unik begrænsning i Transact-SQL er at oprette forbindelse til en databasemotor i Object Explorer i SQL Management Studio og derefter klikke på Ny forespørgsel.
Brug følgende forespørgsel ved at ændre vilkårene efter behov for at oprette en ny tabel og tilføje en begrænsning i en kolonne:
BRUG AdventureWorks2012;
GÅ
OPRET TABEL Produktion. TransaktionHistorieArkiv4
(
TransactionID int IKKE NULL,
CONSTRAINT AK_TransactionID UNIQUE (TransactionID)
);
GÅ.
Udfør forespørgslen.
For at oprette en unik begrænsning på en eksisterende tabel skal du også udføre følgende T-SQL-forespørgsel:
BRUG AdventureWorks2012;
GÅ
ALTER TABLE Person. Adgangskode
TILFØJ KONTRAINT AK_Password UNIK (PasswordHash, PasswordSalt);
GÅ.
UNIKE begrænsninger vs. UNIKE indekser
Der har været en vis forvirring om forskellen mellem en UNIQUE-begrænsning og et UNIQUE-indeks. Mens du muligvis bruger forskellige T-SQL-kommandoer til at oprette dem (ALTER TABLE og ADD CONSTRAINT for begrænsninger og CREATE UNIQUE INDEX for indexes), har de for det meste den samme effekt. Når du opretter en UNIQUE-begrænsning, oprettes det faktisk et UNIQUE-indeks på bordet. Bemærk dog flere forskelle:
- Når du opretter et indeks, kan du tilføje yderligere indstillinger til oprettelseskommandoen.
- En kolonne, der er underlagt en UNIK begrænsning, kan bruges som en fremmed nøgle.