Opas ainutlaatuisiin rajoituksiin Microsoft SQL Serverissä

Luomalla AINUTLAATUINEN rajoite, SQL Server -järjestelmänvalvojat määrittävät, että tietokannan sarake ei saa sisältää päällekkäisiä arvoja. Kun luot uuden ainutlaatuisen rajoite, SQL Server tarkistaa kyseisen sarakkeen selvittääkseen, sisältääkö se kaksoisarvoja. Jos pöytä sisältää kaksoiskappaleita, rajoituksen luomiskomento epäonnistuu. Vastaavasti, kun olet määrittänyt sarakkeeseen UNIQUE-rajoituksen, epäonnistuvat myös yritykset lisätä tai muokata tietoja, jotka aiheuttavat kaksoiskappaleiden olemassaolon.

SQL-koodi mustalla taustalla.
KIVILCIM PINAR / Getty Images

Miksi käyttää ainutlaatuisia rajoituksia

AINUTLAATUINEN rajoitus ja ensisijainen avain pakottavat ainutlaatuisuuden, mutta joskus on parempi vaihtoehto AINUTLAATUINEN rajoitus.

  • Määritä taulukolle useita rajoituksia UNIQUE-rajoituksen avulla. Voit liittää taulukkoon vain yhden ensisijaisen avaimen.
  • Käytä UNIQUE-rajoitusta, kun sarake sallii nolla-arvot. Ensisijaisen avaimen rajoitukset voidaan liittää vain sarakkeisiin, jotka eivät salli nolla-arvoja.
instagram viewer

Ainutlaatuisen rajoituksen luominen

Helpoin tapa luoda ainutlaatuinen rajoitus Transact-SQL: ssä on muodostaa yhteys SQL Management Studion Object Explorer -tietokannan moottoriin ja napsauttaa sitten Uusi kysely.

Käytä seuraavaa kyselyä, muokkaamalla termejä tarpeen mukaan, luo uusi taulukko ja lisää rajoitus sarakkeeseen:

KÄYTÄ AdventureWorks2012; 
MENNÄ
Luo taulukko Tuotanto. TransactionHistoryArchive 4
(
TransactionID int EI NULL,
CONSTRAINT AK_TransactionID UNIQUE (TransactionID)
);
MENNÄ.

Suorita kysely.

Vastaavasti, jos haluat luoda ainutlaatuisen rajoituksen olemassa olevaan taulukkoon, suorita seuraava T-SQL-kysely:

KÄYTÄ AdventureWorks2012; 
MENNÄ
ALTER TABLE Henkilö. Salasana
LISÄÄ RAJOITUS AK_Password UNIQUE (PasswordHash, PasswordSalt);
MENNÄ.

AINUTLAATUISET rajoitteet vs. AINUTLAATUISET hakemistot

UNIQUE-rajoituksen ja UNIQUE-indeksin välillä on ollut hämmennystä. Vaikka voit luoda erilaisia ​​T-SQL-komentoja niiden luomiseen (ALTER TABLE ja ADD CONSTRAINT rajoituksille ja CREATE UNIQUE INDEX indekseille), niillä on suurin piirtein sama vaikutus. Itse asiassa, kun luot UNIQUE-rajoituksen, se todella luo UNIQUE-indeksin taulukkoon. Huomaa kuitenkin useita eroja:

  • Kun luot indeksin, voit lisätä lisäasetuksia luomiskomentoon.
  • Saraketta, johon sovelletaan AINUTLAATUISIA rajoituksia, voidaan käyttää a ulkomainen avain.