En guide till UNIKA begränsningar i Microsoft SQL Server

Genom att skapa en UNIK begränsning, SQL Server-administratörer anger att en databaskolumn inte får innehålla dubbla värden. När du skapar en ny UNIK begränsning, SQL Server kontrollerar kolumnen i fråga för att avgöra om den innehåller några dubbla värden. Om tabell innehåller dubbletter misslyckas kommandot för att skapa begränsningar. När du har definierat en UNIK begränsning för en kolumn misslyckas också försök att lägga till eller ändra data som skulle få dubbletter att existera.

SQL-kod på svart bakgrund.
KIVILCIM PINAR / Getty Images

Varför använda UNIKA begränsningar

En unik begränsning och en primär nyckel styr båda unika egenskaper, men det finns tillfällen att en UNIK begränsning är det bättre valet.

  • Använd en UNIK begränsning för att ange flera begränsningar för en tabell. Du kan bara bifoga en primär nyckel till en tabell.
  • Använd en UNIK begränsning när en kolumn tillåter nullvärden. Primära nyckelbegränsningar kan endast bifogas kolumner som inte tillåter nollvärden.

Skapa en UNIK begränsning

Det enklaste sättet att skapa en unik begränsning i Transact-SQL är att ansluta till en databasmotor i Object Explorer i SQL Management Studio och klicka sedan på

instagram viewer
Ny fråga.

Använd följande fråga, ändra villkoren efter behov för att skapa en ny tabell och lägga till en begränsning i en kolumn:

ANVÄND AdventureWorks2012; 

SKAPA TABELL Produktion. TransactionHistoryArkive4
(
TransactionID int INTE NULL,
CONSTRAINT AK_TransactionID UNIQUE (TransactionID)
);
GÅ.

Utför frågan.

På samma sätt, för att skapa en unik begränsning för en befintlig tabell, kör du följande T-SQL-fråga:

ANVÄND AdventureWorks2012; 

ALTER TABLE Person. Lösenord
LÄGG TILL KONSTRAINT AK_Password UNIQUE (PasswordHash, PasswordSalt);
GÅ.

UNIKA begränsningar vs. UNIKA index

Det har förekommit en viss förvirring om skillnaden mellan en UNIQUE-begränsning och ett UNIQUE-index. Medan du kan använda olika T-SQL-kommandon för att skapa dem (ALTER TABLE och ADD CONSTRAINT för begränsningar och CREATE UNIQUE INDEX for indexes), har de för det mesta samma effekt. Faktum är att när du skapar en UNIK begränsning skapar den faktiskt ett UNIKT index på bordet. Notera dock flera skillnader:

  • När du skapar ett index kan du lägga till ytterligare alternativ till skapelsekommandot.
  • En kolumn med en UNIK begränsning kan användas som en främmande nyckel.