CONSTRAINT-klausel

NB! :  See artikkel on masintõlgitud, vaadake lahtiütlust. Selle artikli ingliskeelse versiooni leiate aadressilt (viiteks).

kitsendus on sarnane register, kuid seda saab kasutada ka kahe tabeli vahelise seos loomiseks.

CONSTRAINT-klauslit kasutatakse lausetes ALTER TABLE ja CREATE TABLE kitsenduste loomiseks või kustutamiseks. CONSTRAINT-klausleid on kahte tüüpi: üks on mõeldud kitsenduse loomiseks ühel väljal ja teine kitsenduse loomiseks mitmel väljal.

Märkus. : Microsoft Accessi andmebaasimootor ei toeta kasutuse PIIRANG, või mis tahes andmete määratlus keel laused, Microsoft Accessi andmebaasidega. Kasutage selle asemel meetodite DAO loomine.

Süntaks

Ühe välja kitsendamine:

PIIRANGU nimi {PRIMAARVÕTME | KORDUMATU | POLE NULL |
VIITED foreignTabel [(foreignfield1, foreignfield2)]
[sees VÄRSKENDAMISEL KASKAADI | MÄÄRAKE NULL]
[sees KUSTUTADA KASKAADI | MÄÄRAKE NULL]}

Mitme välja kitsendamine:

PIIRANGU nimi
{PRIMAARVÕTME (primary1[, primary2 [;...]]) |
KORDUMATU (unique1[, unique2 [;...]]) |
POLE NULL (notnull1[, notnull2 [;...]]) |
VÕÕRVÕTI [NO INDEX] (Viide1[, viide2 [;...]]) VIITED foreigntable [(foreignfield1 [, foreignfield2 [;...]])]
[Sees VÄRSKENDAMISEL KASKAADI | MÄÄRAKE NULL]
[sees KUSTUTADA KASKAADI | MÄÄRAKE NULL]}

CONSTRAINT-klausel koosneb järgmistest osadest.

Osa

Kirjeldus

nimi

Loodava kitsenduse nimi.

primaarne1, primaarne2

primaarvõti määratavate väljade nimed.

kordumatu1, kordumatu2

Kordumatuks võtmeks määratavate väljade nimed.

pole_tühi1, pole_tühi2

Väli või väljad, mis on piiratud tühiväärtust nimi.

ref1, ref2

välisvõtiväljade nimed, mis viitavad mõne muu tabeli väljadele.

võõrtabel

välistabel nimi, mis sisaldab võõrvälja määratud välju.

võõrväli1, võõrväli2

Võõrtabeli nende väljade nimed, mis on väärtuste ref1 ja ref2 määratud. Selle klausli võite välja jätta siis, kui viidatud väli on võõrtabeli primaarvõti.


Kommentaarid

Ühe välja kitsendamise süntaksit kasutatakse lausete ALTER TABLE või CREATE TABLE välja määratlemise klauslis, mis järgneb lauses välja andmetüübi määrangule.

Mitme välja kitsendamise süntaksit kasutage siis, kui kasutate reserveeritud sõna CONSTRAINT lausetes ALTER TABLE või CREATE TABLE väljaspool väljadefinitsiooni klauslit.

CONSTRAINT-klausli abil saate väljale määrata ühe järgmistest kitsendustüüpidest.

  • Välja kordumatuks võtmeks määramise jaoks saate kasutada võtmesõna UNIQUE. See tähendab, et kahel tabeli kirjel ei saa olla sellel väljal sama väärtust. Kordumatuks saate kitsendada kõiki välju või väljaloendeid. Kui mitme välja kitsendus on määrtud kordumatuks võtmeks, peavad kõigi indeksisse kuuluvate väljade kombineeritud väärtused olema kordumatud isegi siis, kui kaks või enam kirjet on sama väärtusega üksnes ühel väljal.

  • Võtmesõnu PRIMARY KEY saate kasutada tabelis ühe välja või väljade kogumi määramiseks primaarvõtmeks. Kõik primaarvõtme väärtused peavad olema kordumatud ega tohi olla väärtusega Null ning ühe tabeli kohta võib olla ainult üks primaarvõti.

    Märkus. : Ärge määrake võtmesõna PRIMARY KEY kitsendust tabelile, millel juba on primaarvõti, vastasel juhul ilmneb tõrge.

  • Võtmesõnu FOREIGN KEY saate kasutada väljade võõrvõtmeks määramise jaoks. Kui võõrtabeli primaarvõti koosneb mitmest väljast, tuleb teil kasutada mitme välja kitsenduse määratlust, kus on loendatud kõik viitavad väljad, võõrtabeli nimi ning viitavate väljadega samas järjekorras võõrtabeli viidatavate väljade nimed. Kui viidatavad väljad on võõrtabeli primaarvõtmeks, ei pea te neid välju määrama. Vaikimisi peab andmebaasimootor viidatavateks väljadeks võõrtabeli primaarvõtit.

    Võõrvõtme kitsendused määratlevad teatud toimingud, mida tehakse siis, kui vastava primaarvõtme väärtust muudetakse.

  • Saate määratleda võõrtabeliga tehtavad toimingud, mis vastavad primaarvõtmega tehtud toimingutele tabelis, mille kohta on määratletud CONSTRAINT-klausel. Vaadake näiteks järgmist määratlust tabeli Kliendid jaoks.

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

Vaadake järgmist tabeli Tellimused määratlust, mis määratleb tabeli primaarvõtmele viitava võõrvõtme seose:

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

Klauslid ON UPDATE CASCADE ja ON DELETE CASCADE on mõlemad võõrvõtmes määratletud. Klausel ON UPDATE CASCADE tähendab, et kui kliendi identifikaatorit (Kliendi_Id) tabelis Kliendid värskendatakse, siis värskendatakse seda tabeli Tellimused kaudu. Iga tellimust, mis sisaldab vastavat kliendi ID väärtust, värskendatakse automaatselt uue väärtusega. Klausel ON DELETE CASCADE tähendab, et kui klient kustutatakse tabelist Kliendid, siis kustutatakse ka kõik read tabelis Tellimused, mis sisaldavad sama kliendi ID väärtust.

Kaaluge tabeli Tellimused määratlemiseks järgmist näidet, kus kasutatakse toimingu CASCADE asemel toimingut SET NULL.

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

Klausel ON UPDATE SET NULL tähendab, et kui kliendi ID-d (Kliendi_Id) tabelis Kliendid värskendatakse, siis häälestatakse vastavad võõrvõtme väärtused tabelis Tellimused automaatselt väärtusele NULL. Sarnaselt tähendab klausel ON DELETE SET NULL, et kui klient tabelist Kliendid kustutatakse, siis häälestatakse kõik vastavad võõrvõtmed tabelis Tellimused väärtusele NULL.

Võõrvõtmete indeksite automaatse loomise vältimiseks saab kasutada modifikaatorit NO INDEX. Seda võõrvõtme määratlusvormi tuleks kasutada üksnes siis, kui tekkivaid indeksväärtusi sagedasti dubleeritakse. Kui võõrvõtme indeksi väärtusi sagedasti dubleeritakse, pole indeksi kasutamine nii tõhus kui tabeli skannimine. Tabelis, kus pidevalt lisatakse ja kustutatakse ridu, vähendab seda tüüpi indeksi säilitamine jõudlust ega too mingisugust kasu.



Märkus. : Masintõlke lahtiütlus. Selle artikli tõlkis arvutisüsteem ilma inimese sekkumiseta. Microsoft pakub selliseid masintõlkeid, et inglise keelt mittekõnelevad kasutajad saaksid vaadata sisu Microsofti toodete, teenuste ja tehnoloogiate kohta. Kuna artikkel on masintõlgitud, võib see sisaldada sõnavara-, süntaksi- või grammatikavigu.

Täiendage oma oskusi
Tutvuge koolitusmaterjalidega
Kasutage uusi funktsioone enne teisi
Liituge Office Insideri programmiga

Kas sellest teabest oli abi?

Täname tagasiside eest!

Täname tagasiside eest! Tundub, et võiksime teid kokku viia ühega meie Office'i tugiagentidest, kes aitab teil probleemi lahendada.

×