CONSTRAINT-lause

Tärkeää: Tämä on artikkeli on käännetty koneellisesti. Lue vastuuvapauslauseke. Tämän artikkelin englanninkielinen versio on täällä .

rajoitus on verrattavissa indeksi, vaikka sen avulla voidaan myös luoda suhdetoiseen taulukkoon.

CONSTRAINT-lausetta käytetään ALTER TABLE- ja CREATE TABLE -lauseissa, kun luodaan tai poistetaan rajoitteita. CONSTRAINT-lauseita on kahta lajia: toisella luodaan rajoite yksittäiseen kenttään ja toisella useisiin kenttiin.

Huomautus: Microsoft Access database engine ei tue RAJOITUKSEN käyttö tai mitä tahansa tietojen definition language-lauseet Microsoft Access-tietokantoja. Käytä DAO Create-menetelmiä.

Syntaksi

Yhden kentän rajoite:

RAJOITUKSEN nimi {PERUSAVAIMEN | YKSILÖIVÄ | NOT NULL |
VIITTAUKSET foreignTaulukko [(viitekenttä1, viitekenttä2)]
[edelleen PÄIVITYKSEN LIMITTÄIN | MÄÄRITTÄÄ NULL]
[edelleen POISTA LIMITTÄIN | MÄÄRITTÄÄ NULL]}

Usean kentän rajoite:

RAJOITUKSEN nimi
{PERUSAVAIN (perus1[, perus2 [,...]]) |
YKSILÖIVÄ (yksilöllinen1[, yksilöllinen2 [,...]]) |
Ei OLE NULL (einull1[, notnull2 [,...]]) |
VIITEAVAIN [NO INDEX] (viittaus1[, viittaus2 [,...]]) VIITTAUKSET Viiteavaintaulukko [(viitekenttä1 [, viitekenttä2 [,...]])]
[Edelleen PÄIVITYKSEN LIMITTÄIN | MÄÄRITTÄÄ NULL]
[edelleen POISTA LIMITTÄIN | MÄÄRITTÄÄ NULL]}

CONSTRAINT-lauseessa on seuraavat osat:

Osa:

Kuvaus

nimi

Luotavan rajoitteen nimi.

perus1, perus2

perusavain määritettävien kenttien nimi.

yksilöllinen1, yksilöllinen2

Yksilöllisiksi avaimiksi määritettävien kenttien nimi.

einull1, einull2

Kenttä tai kentät, joita muut kuin Null-arvot rajoitettu nimi.

viite1, viite2

Toisessa taulukossa oleviin kenttiin viittaavan viiteavain nimi.

viitetaulukko

viitetaulukko-arvon määrittämiä kenttiä sisältävän viitetaulukko nimi.

viitekenttä1, viitekenttä2

viite1- ja viite2-arvojen määrittämän kentän tai kenttien nimi viitetaulukko-taulukossa. Tämä lause voidaan jättää pois, jos kenttä, johon viitataan, on viitetaulukko-taulukon perusavain.


Huomautuksia

Yksittäisen kentän rajoitteen syntaksia voidaan käyttää ALTER TABLE- tai CREATE TABLE -lauseen kenttämäärityslauseessa välittömästi kentän tietotyypin määrityksen jälkeen.

Usean kentän rajoitteen syntaksia käytetään aina, kun varattu sana CONSTRAINT käytetään kenttämäärityslauseen ulkopuolella ALTER TABLE- tai CREATE TABLE -lauseessa.

CONSTRAINT-lauseella on mahdollista määrittää kenttä joksikin seuraavista rajoitetyypeistä:

  • Kenttä voidaan määrittää yksilölliseksi avaimeksi varatulla UNIQUE-sanalla. Tämä tarkoittaa sitä, ettei kahdella taulukon tietueella voi olla samaa arvoa tässä kentässä. Mikä tahansa kenttä tai kenttien luettelo voidaan rajoittaa yksilölliseksi. Jos usean kentän rajoite määritetään yksilölliseksi avaimeksi, indeksin kaikkien kenttien yhdistettyjen arvojen täytyy olla yksilöllisiä, vaikka usealla tietueella olisi sama arvo vain yhdessä kentässä.

  • Varatuilla PRIMARY KEY -sanoilla voidaan määrittää taulukon kenttä tai kenttäjoukko perusavaimeksi. Kaikkien perusavainarvojen täytyy olla yksilöllisiä eikä null-arvoja. Taulukolla voi olla vain yksi perusavain.

    Huomautus: Älä aseta PRIMARY KEY -rajoitetta taulukkoon, jolla on jo perusavain. Tästä on seurauksena virhe.

  • Kenttä voidaan määrittää viiteavaimeksi varatuilla FOREIGN KEY -sanoilla. Jos viitetaulukon perusavain sisältää useita kenttiä, täytyy käyttää usean kentän rajoitemääritystä. Tässä määrityksessä on luettelo kentistä, joihin viitataan, viitetaulukon nimi sekä viitetaulukon kenttien nimet, joihin viitataan. Nämä nimet ovat samassa järjestyksessä kuin luettelossa olevat viitatut kentät. Jos viittaava kenttä on viitetaulukon perusavain, viittaavia kenttiä ei tarvitse määrittää. Tietokantamoduuli käsittää oletusarvoisesti viitetaulukon perusavaimen kentiksi, joihin viitataan.

    Viiteavainrajoituksilla määritetään tietyt toimet, jotka tulee suorittaa, kun vastaavia perusavainarvoja muutetaan:

  • Viitetaulukossa tehtävät toimet on mahdollista määrittää sen vastaavan toimen perusteella, joka suoritettiin perusavaimelle CONSTRAINT-arvon määritykseen käytetyssä taulukossa. Seuraavaa määritystä on käytetty Asiakkaat-taulukossa:

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

Seuraavassa on määritys Tilaukset-taulukolle, jossa määritetään Asiakkaat-taulukon perusavaimeen viittaava viiteavaimen yhteys:

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

Viiteavain määrittää sekä ON UPDATE CASCADE- että ON DELETE CASCADE -lauseen. ON UPDATE CASCADE -lause tarkoittaa, että jos asiakkaan tunnus (Asiakastunnus) päivitetään Asiakkaat-taulukossa, päivitys suoritetaan myös Tilaukset-taulukossa. Kukin tilaus, joka sisältää vastaavan asiakkaan tunnusarvon, päivitetään automaattisesti uudella arvolla. ON DELETE CASCADE -lause tarkoittaa, että jos asiakas poistetaan Asiakkaat-taulukosta, kaikki Tilauksen-taulukon rivit, jotka sisältävät saman asiakastunnusarvon, poistetaan myös.

Seuraavassa Tilaukset-taulukon määrityksessä käytetään SET NULL -toimintoa CASCADE-toiminnon sijasta:

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

ON UPDATE SET NULL -lause tarkoittaa, että jos asiakkaan tunnus (Asiakastunnus) päivitetään Asiakkaat-taulukossa, vastaavat Tilaukset-taulukon viiteavainarvot asetetaan automaattisesti arvoon NULL. Lause ON DELETE SET NULL tarkoittaa, että jos asiakas poistetaan Asiakkaat-taulukosta, kaikki vastaavat Tilaukset-taulukon viiteavaimet asetetaan automaattisesti arvoon NULL.

Automaattinen indeksien luominen viiteavaimille voidaan estää käyttämällä NO INDEX -määritettä. Tällaista viiteavainmääritystä tulee käyttää vain, jos indeksiarvotuloksissa on usein kaksoisarvoja. Tällöin indeksin käyttäminen saattaa olla tehottomampaa kuin taulukon selaaminen. Tämäntyyppinen indeksi, jossa rivejä lisätään taulukkoon ja poistetaan siitä, heikentää suorituskykyä eikä siitä ole hyötyä.



Huomautus: Konekäännöksestä ilmoittava vastuusvapauslauseke: Tämä artikkeli on käännetty tietokonejärjestelmällä, eikä kieliasiantuntija ole muokannut sitä. Microsoft tarjoaa nämä konekäännökset avuksi muille kuin englantia puhuville käyttäjille, jotta he saavat lisätietoja Microsoftin tuotteista, palveluista ja tekniikoista. Koska artikkeli on koneellisesti käännetty, se saattaa sisältää sanasto-, lauseoppi- ja kielioppivirheitä.

Kehitä taitojasi
Tutustu koulutusmateriaaliin
Saat uudet ominaisuudet ensimmäisten joukossa
Liity Office Insider -käyttäjiin

Oliko näistä tiedoista hyötyä?

Kiitos palautteesta!

Kiitos palautteestasi! Näyttää siltä, että Office-tukiedustajamme avusta voi olla sinulle hyötyä.

×