Odredba CONSTRAINT

ograničenje je nalik na indeks, iako može da se koristi i kako bi se uspostavio odnos sa dugom tabelom.

Odredbu CONSTRAINT koristite u izrazima ALTER TABLE i CREATE TABLE kako biste pravili ili brisali ograničenja. Postoje dva tipa odredbi CONSTRAINT: Jedan za pravljenje ograničenja za jedno polje i drugi za pravljenje ograničenja za više polja.

Napomena : Mašina Microsoft Access baze podataka ne podržava korišćenje odredbe CONSTRAINT niti bilo kojih izraza jezika za definisanje podataka uz baze podataka koje nisu Microsoft Access baze podataka. Umesto toga koristite „DAO Create“ metode.

Sintaksa

Ograničenje za jedno polje:

CONSTRAINT ime {PRIMARY KEY | UNIQUE | NOT NULL |
REFERENCES sporednatabela [(sporednopolje1, sporednopolje2)]
[ON UPDATE CASCADE | SET NULL]
[ON DELETE CASCADE | SET NULL]}

Ograničenje za više polje:

CONSTRAINT ime
{PRIMARY KEY (primarno1[, primarno2 [, ...]]) |
UNIQUE (jedinstveno1[, jednistveno2 [, ...]]) |
NOT NULL (nijebezvrednosti1[, nijebezvrednosti2 [, ...]]) |
FOREIGN KEY [NO INDEX] (ref1[, ref2 [, ...]]) REFERENCES sporednatabela [(sporednopolje1 [, sporednopolje2 [, ...]])]
[ON UPDATE CASCADE | SET NULL]
[ON DELETE CASCADE | SET NULL]}

Odredba CONSTRAINT ima sledeće delove:

Deo

Opis

ime

Ime ograničenja koja se pravi.

primarno1, primarno2

Imena polja kojima se dodeljuje primarni ključ.

jedinstveno1, jedinstveno2

Imena polja koja se dodeljuju kao jedinstveni ključ.

nijebezvrednosti1, nijebezvrednosti2

Imena polja koja su ograničena na vrednosti koje nemaju vrednost.

ref1, ref2

Ime spoljni ključ polja koja upućuju na polja u drugoj tabeli.

sporednatabela

Ime spoljna tabela koje sadrži polja koja navodi sporednopolje.

sporednopolje1, sporednopolje2

Ime polja u sporednojtabeli koja navode ref1, ref2. Tu odredbu možete da izostavite ako je polje na koje se upućuje primarni ključ sporednetabele.


Napomene

Sintaksu za ograničenje za jedno polje u odredbi definicije polja izraza ALTER TABLE ili CREATE TABLE možete da koristite odmah posle navođenje tipa podataka polja.

Sintaksu za ograničenje za više polja možete da koristite kad god koristite rezervisana reč CONSTRAINT izvan odredbe definicije polja u izrazu ALTER TABLE ili CREATE TABLE.

Pomoću izraza CONSTRAINT možete da odredite polje kao jedno od sledećih tipova ograničenja:

  • Rezervisanu reč UNIQUE možete da koristite da biste odredili polje kao jedinstveni ključ. To znači da dva zapisa u tabeli ne mogu da imaju istu vrednost u ovom polju. Možete da ograničite bilo koje polje ili listu polja kao jedinstvene. Ako se ograničenje za više polja odredi kao jedinstveni ključ, kombinovane vrednosti svih polja u indeksu moraju da budu jedinstvene, čak i ako dva ili više zapisa imaju istu vrednost u samo jednom od polja.

  • Rezervisane reči PRIMARY KEY možete da koristite kako biste odredili jedno polje ili skup polja u tabelu kao primarni ključ. Sve vrednosti u primernom ključu moraju da budu jedinstvene i ne Bez vrednosti i može da postoji samo jedan primarni ključ za tabelu.

    Napomena : Nemojte da postavite ograničenje PRIMARY KEY za tabelu koja već ima primerni ključ. Ako to uradite, dolazi do greške.

  • Rezervisane reči FOREIGN KEY možete da koristite kako biste odredili polje kao sporedni ključ. Ako se primarni ključ sporedne tabele sastoji iz više polja, morate da koristite definiciju ograničenja za više polja, koja navodi sva polja za referencu, ime sporedne tabele i imena referentnih polja u sporednoj tabeli istim redosledom kojim su navedena polja za referencu. Ako su referentna polja primarni ključ sporedne tabele, ne morate da ih navodite. Mašina baze podataka podrazumevano se ponaša kao da su referentna polja primarni ključ sporedne tabele.

    Ograničenja sporednog ključa definišu određene radnje koje se izvršavaju kada se promeni vrednost odgovarajućeg primarnog ključa:

  • Možete da navedete radnje koje se izvršavaju nad sporednom tabelom na osnovu odgovarajuće radnje koju vrši primerni ključ u tabeli u kojoj je definisan izraz CONSTRAINT. Na primer, razmotrite sledeću definiciju za tabelu „Klijenti“:

CREATE TABLE Customers (CustId INTEGER PRIMARY KEY, CLstNm NCHAR VARYING (50))

Razmotrite sledeću definiciju tabele „Porudžbine“, koja definiše relaciju sporednog ključa koja upućuje na primerni ključ tabele „Klijenti“:

CREATE TABLE Orders (OrderId INTEGER PRIMARY KEY, CustId INTEGER, OrderNotes NCHAR VARYING (255), CONSTRAINT FKOrdersCustId FOREIGN KEY (CustId) REFERENCES Customers ON UPDATE CASCADE ON DELETE CASCADE

Obe odredbe ON UPDATE CASCADE i ON DELETE CASCADE definisane su u sporednom ključu. Odredba ON UPDATE CASCADE znači da ako se identifikator klijenta (CustId) ažurira u tabeli „Klijent“, ažuriranje se kaskadno primenjuje u tabeli „Porudžbine“. Svaka porudžbina koja sadrži odgovarajuću vrednost identifikatora klijenta ažurira se automatski sa novom vrednošću. Odredba ON DELETE CASCADE znači da se ako se klijent izbriše iz tabele „Klijent“, brišu i svi redovi u tabeli „Porudžbine“ koji sadrže istu vrednost identifikatora klijenta.

Razmotrite sledeću različitu definiciju tabele „Porudžbine“ koja koristi radnju SET NULL umesto radnje CASCADE:

CREATE TABLE Orders (OrderId INTEGER PRIMARY KEY, CustId INTEGER, OrderNotes NCHAR VARYING (255), CONSTRAINT FKOrdersCustId FOREIGN KEY (CustId) REFERENCES Customers ON UPDATE SET NULL ON DELETE SET NULL

Odredba ON UPDATE SET NULL znači da ako se identifikator klijenta (CustId) ažurira u tabeli „Klijent“, odgovarajuće vrednosti sporednog ključa u tabeli „Porudžbine“ automatski se postavljaju na vrednost NULL. Na sličan način, odredba ON DELETE SET NULL znači da se svi sporedni ključevi u tabeli „Porudžbine“ automatski postavljaju na vrednost NULL ako se klijent izbriše iz tabele „Klijent“.

Da biste sprečili automatsko pravljenje indeksa za sporedne ključeve, možete da koristite modifikator NO INDEX. Ovaj oblik definicije sporednog ključa trebalo bi da koristite samo u slučajevima kada bi se tako dobijene vrednosti indeksa često duplirale. Kada se vrednosti sporednog indeksa često dupliraju, korišćenje indeksa može da bude manje efikasno od jednostavnog skeniranja tabele. Održavanje tog tipa indeksa, sa redovima umetnutim u tabelu i izbrisanim iz nje, umanjuje performanse i ne pruža nikakve pogodnosti.



Unapredite veštine
Istražite obuku
Prvi nabavite nove funkcije
Pridružite se Office Insider korisnicima

Da li su vam ove informacije koristile?

Hvala vam na povratnim informacijama!

Hvala za povratne informacije! Zvuči da će biti od pomoći ako vas povežemo sa našim agentima Office podrške.

×