Uvjet CONSTRAINT

ograničenje je slično indeksu, iako se može koristiti i za uspostavljanje odnosa s drugom tablicom.

Uvjet CONSTRAINT koristite u naredbama ALTER TABLE i CREATE TABLE da biste stvorili ili izbrisali ograničenja. Dvije su vrste uvjeta CONSTRAINT: jedan za stvaranje ograničenja na pojedinačnom polju i jedan za stvaranje ograničenja na više polja.

Napomena : Modul baze podataka programa Microsoft Access ne podržava korištenje uvjeta CONSTRAINT ni drugih naredbi jezika za definiciju podataka u bazama podataka koje nisu stvorene pomoću programa Microsoft Access. Umjesto tih naredbi koristite metode DAO Create.

Sintaksa

Ograničenje pojedinačnog polja:

CONSTRAINT naziv {PRIMARY KEY | UNIQUE | NOT NULL |
REFERENCES stranatablica [(vanjskopolje1, vanjskopolje2)]
[ON UPDATE CASCADE | SET NULL]
[ON DELETE CASCADE | SET NULL]}

Ograničenje skupine polja:

CONSTRAINT naziv
{PRIMARY KEY (primarno1[, primarno2 [, ...]]) |
UNIQUE (jedinstveno1[, jedinstveno2 [, ...]]) |
NOT NULL (nijenull1[, nijenull2 [, ...]]) |
FOREIGN KEY [NO INDEX] (referentnavrijednost1[, referentnavrijednost2 [, ...]]) REFERENCES vanjskatablica [(vanjskopolje1 [, vanjskopolje2 [, ...]])]
[ON UPDATE CASCADE | SET NULL]
[ON DELETE CASCADE | SET NULL]}

Uvjet CONSTRAINT sadrži sljedeće dijelove:

Dio

Opis

naziv

Naziv ograničenja koje će se stvoriti.

primarno1, primarno2

Naziv polja ili skupine polja koje je potrebno dodijeliti kao primarni ključ.

jedinstveno1, jedinstveno2

Naziv polja ili skupine polja koje je potrebno dodijeliti kao jedinstveni ključ.

nijenull1, nijenull2

Naziv polja ili skupine polja koja su ograničena na vrijednosti koje nisu null.

referentnavrijednost1, referentnavrijednost2

Naziv za vanjski ključ polja ili skupine polja koji se odnosi na polja u drugoj tablici.

vanjskatablica

Naziv za vanjska tablica koji sadrži polje ili skupinu polja koje navodi vanjskopolje.

vanjskopolje1, vanjskopolje2

Naziv polja ili skupine polja u parametru vanjskatablica koji navode referentnavrijednost1 i referentnavrijednost2. Uvjet možete izostaviti ako je referentno polje primarni ključ parametra vanjskatablica.


Napomene

Sintaksu za ograničenje pojedinačnog polja u uvjetu za definiciju polja naredbe ALTER TABLE ili CREATE TABLE koristite neposredno nakon specifikacije vrste podataka polja.

Sintaksu za ograničenje skupine polja koristite prilikom svakog korištenja rezervirane riječi CONSTRAINT izvan uvjeta za definiciju polja u naredbi ALTER TABLE ili CREATE TABLE.

Pomoću uvjeta CONSTRAINT polje možete odrediti kao jednu od sljedećih vrsta ograničenja:

  • Rezervirana riječ UNIQUE služi za određivanje polja kao jedinstvenog ključa. To znači da dva zapisa u tablici mogu imati istu vrijednost u tom polju. Kao jedinstveno možete ograničiti bilo koje polje ili skupinu polja. Ako je kao jedinstveni ključ određeno ograničenje višestrukih polja, kombinirane vrijednosti svih polja u indeksu moraju biti jedinstvene, čak i ako dva ili više zapisa imaju istu vrijednost u samo jednom od polja.

  • Rezervirane riječi PRIMARY KEY koristite za određivanje jednog polja ili skupine polja u tablici kao primarnog ključa. Sve vrijednosti u primarnom ključu moraju biti jedinstvene i ne smiju biti Null, a može postojati samo jedan primarni ključ za tablicu.

    Napomena : Ograničenje PRIMARNI KLJUČ nemojte postavljati na tablici koja već ima primarni ključ jer ako to učinite, doći će do pogreške.

  • Rezervirane riječi VANJSKI KLJUČ služe za određivanje polja kao vanjskog ključa. Ako se primarni ključ vanjske tablice sastoji od više polja, morate koristiti definiciju ograničenja skupine polja koja navodi sva referentna polja, naziv vanjske tablice i nazive referentnih polja u vanjskoj tablici istim redoslijedom kojim su referentna polja navedena. Ako je referentno polje ili skupina polja primarni ključ vanjske tablice, ne morate navoditi referentna polja. Prema zadanim se postavkama modul baze podataka ponaša kao da su referentna polja primarni ključ tablice.

    Ograničenja vanjskog ključa definiraju određene akcije koje je potrebno izvršiti kada se mijenja odgovarajuća vrijednost primarnog ključa:

  • Akcije koje je potrebno izvršiti na vanjskoj tablici možete navesti na temelju odgovarajuće akcije koja je izvršena na primarnom ključu u tablici za koju je definiran uvjet CONSTRAINT. Na primjer, razmotrite sljedeću definiciju za tablicu Kupci:

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

Imajte na umu sljedeću definiciju tablice Narudžbe, koja definira odnos vanjskog ključa koji upućuje na primarni ključ tablice Kupci:

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

Oba uvjeta ON UPDATE CASCADE i ON DELETE CASCADE definirana su na vanjskom ključu. Uvjet ON UPDATE CASCADE znači da ako je identifikator kupca (CustId) ažuriran u tablici Kupac, ažuriranje će se kaskadno provesti kroz tablicu Narudžbe. Svaka narudžba koja sadrži odgovarajuću vrijednost identifikatora kupca novom će se vrijednošću ažurirati automatski. Uvjet ON DELETE CASCADE znači da ako je kupac izbrisan iz tablice Kupac, izbrisat će se i svi reci u tablici Narudžbe koji sadrže istu vrijednost identifikatora kupca.

Razmislite o sljedećoj drukčijoj definiciji tablice Narudžbe uz korištenje akcije SET NULL umjesto 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

Uvjet ON UPDATE SET NULL znači da će se odgovarajuće vrijednosti vanjskog ključa u tablici Narudžbe, ako je identifikator kupca (CustId) ažuriran u tablici Kupac, automatski postaviti na NULL. Slično tome, uvjet ON DELETE SET NULL znači da će se svi odgovarajući vanjski ključevi u tablici Narudžbe, ako je kupac izbrisan iz tablice Kupac, automatski postaviti na NULL.

Radi sprječavanja automatskog stvaranja indeksa za vanjske ključeve može se koristiti modifikator NO INDEX. Taj se oblik definicije vanjskog ključa mora koristiti samo u slučajevima kada bi se izračunate vrijednosti indeksa često duplicirale. Tamo gdje se vrijednosti u indeksu vanjskog ključa često dupliciraju, korištenje indeksa može biti manje učinkovito od jednostavnog izvođenja pregleda tablice. Održavanje te vrste indeksa s recima umetnutim i izbrisanim iz tablice smanjuje performanse i ne donosi nikakve prednosti.



Proširite svoje vještine
Istražite osposobljavanje

Jesu li vam ove informacije bile korisne?

Hvala vam na povratnim informacijama!

Hvala vam na povratnim informacijama! Čini se da bi vam pomoglo kad bismo vas povezali s nekim od naših agenata podrške za Office.

×