Juhend ainulaadsete piirangute kohta Microsoft SQL Serveris

Luues UNIKAALSE piirang, SQL serveri administraatorid täpsustavad, et andmebaasi veerg ei tohi sisaldada duplikaatväärtusi. Kui loote uue unikaalse piirang, Kontrollib SQL Server kõnealust veergu, et teha kindlaks, kas see sisaldab duplikaatväärtusi. Kui tabel sisaldab duplikaate, käsu piirangute loomine nurjub. Samamoodi ebaõnnestuvad ka pärast veerus KÕIKLIKU piirangu määratlemist katsed lisada või muuta andmeid, mis põhjustaksid duplikaatide olemasolu.

SQL-kood mustal taustal.
KIVILCIM PINAR / Getty Images

Miks kasutada ainulaadseid piiranguid

UNIKAALNE piirang ja esmane võti tagavad mõlemad ainulaadsuse, kuid on juhtumeid, kus ainulaadne piirang on parem valik.

  • Mitme piirangu määramiseks tabelile kasutage unikaalset piirangut. Tabelile saab lisada ainult ühe peamise võtme.
  • Kui veerg lubab nullväärtusi, kasutage unikaalset piirangut. Esmase võtme piiranguid saab lisada ainult veergudele, mis ei luba nullväärtusi.

Ainulaadse piirangu loomine

Transact-SQL-is ainulaadse piirangu loomise lihtsaim viis on luua ühendus SQL Management Studio Object Exploreris oleva andmebaasimootoriga ja seejärel klõpsata

instagram viewer
Uus päring.

Kasutage järgmist päringut, muutes tingimusi vastavalt vajadusele, uue tabeli loomiseks ja veerule piirangu lisamiseks:

KASUTA AdventureWorks2012; 
GO
LOE TABEL Tootmine. TehinguajaluguArhiiv4
(
TransactionID int NOT NULL,
CONTRRAINT AK_TransactionID UNIQUE (TransactionID)
);
GO.

Käivitage päring.

Samamoodi olemasoleva tabeli ainulaadse piirangu loomiseks käivitage järgmine T-SQL-päring:

KASUTA AdventureWorks2012; 
GO
ALTER TABEL Isik. Parool
ADD CONTRRAINT AK_Password UNIQUE (PasswordHash, PasswordSalt);
GO.

UNIKAALSED piirangud vs. UNIKAALSED indeksid

UNIKAALSE piirangu ja UNIKAALSE indeksi erinevuse vahel on olnud segadust. Ehkki nende loomiseks võite kasutada erinevaid T-SQL-i käske (ALTER TABLE ja ADD CONTRRAINT piirangute korral ning CREATE UNIQUE INDEX indeksite jaoks), on neil enamasti sama mõju. Tegelikult, kui loote UNIKAALSE piirangu, loob see tegelikult tabelile UNIKAALSE indeksi. Pange tähele siiski mitmeid erinevusi:

  • Indeksi loomisel saate loomiskäsku lisada täiendavaid valikuid.
  • Veergu, mille suhtes kehtib ainulaadne piirang, võib kasutada a-na võõras võti.