CONSTRAINT záradék

A megkötés olyan mint egy indexelés, eltekintve attól, hogy megkötéssel másik táblával is létesíthető kapcsolat.

ALTER TABLE és CREATE TABLE utasításokban a CONSTRAINT záradékot használva hozhat létre vagy törölhet megkötéseket. A CONSTRAINT záradéknak két típusa létezik: az egyikkel egy mezőre vonatkozó megkötést lehet létrehozni, a másikkal több mezőre vonatkozót.

Megjegyzés : A Microsoft Access adatbázismotor nem támogatja CONSTRAINT vagy bármilyen adatdefiníciós nyelvi utasítás használatát nem Microsoft Access-adatbázisokkal. Használjon helyettük DAO létrehozási metódusokat.

Szintaxis

Egymezős megkötés:

CONSTRAINT név {PRIMARY KEY | UNIQUE | NOT NULL |
REFERENCES idegentábla [(idegenmező1, idegenmező2)]
[ON UPDATE CASCADE | SET NULL]
[ON DELETE CASCADE | SET NULL]}

Többmezős megkötés:

CONSTRAINT név
{PRIMARY KEY (elsődleges1[, elsődleges2 [, ...]]) |
UNIQUE (egyedi1[, egyedi2 [, ...]]) |
NOT NULL (nemnull1[, nemnull2 [, ...]]) |
FOREIGN KEY [NO INDEX] (hiv1[, hiv2 [, ...]]) REFERENCES idegentábla [(idegenmező1 [, idegenmező2 [, ...]])]
[ON UPDATE CASCADE | SET NULL]
[ON DELETE CASCADE | SET NULL]}

A CONSTRAINT záradék az alábbi részekből áll:

Rész

Leírás

név

A létrehozandó megkötés neve.

elsődleges1, elsődleges2

Az elsődleges kulcsként használandó mező vagy mezők neve.

egyedi1, egyedi2

Az egyedi kulcsként használandó mező vagy mezők neve.

nemnull1, nemnull2

Azon mező vagy mezők neve, melyekben nem szerepelhet Null érték.

hiv1, hiv2

Az idegen kulcsként használandó mező vagy mezők neve, melyek egy másik tábla mezőire hivatkoznak.

idegen_tábla

Az idegenmező argumentummal meghatározott mezőt vagy mezőket tartalmazó idegen tábla neve.

idegenmező1, idegenmező2

A hiv1 és hiv2 argumentumokkal meghatározott idegen táblában található mező vagy mezők neve. Ezt a záradékot ki lehet hagyni, ha a hivatkozott mező az idegen_tábla elsődleges kulcsa.


Megjegyzések

Az egymezős megkötési szintaxist az ALTER TABLE vagy CREATE TABLE utasítás meződefiníciós záradékában kell megadni, közvetlenül a mező adattípusának meghatározása után.

A többmezős megkötési szintaxist akkor kell használni, amikor ALTER TABLE vagy CREATE TABLE utasításban meződefiníciós záradékon kívül használ egy foglalt szót tartalmazó CONSTRAINT záradékot.

A CONSTRAINT záradékkal a mezőket az alábbi típusú mezőként jelölheti ki:

  • A UNIQUE foglalt szót használva kijelölheti a mezőt egyedi kulcsként. Ez azt jelenti, hogy a tábla ezen mezőiben két rekord értéke nem lehet ugyanaz. Bármilyen mezőt vagy mezőlistát megadhat egyedi kulcsként. Ha több mezőt köt ki egyedi kulcsként, az indexben található mezők együttes értékének kell egyedinek lennie, még abban az esetben is, ha két vagy több rekord értéke az egyik mezőben megegyezik.

  • A PRIMARY KEY foglalt szavakat használva elsődleges kulcsként jelölheti ki a tábla egyik mezőjét vagy mezőkészletét. Az elsődleges kulcsot alkotó mezők értékeinek egyedinek kell lenniük, és értékük nem lehet Null. Egy táblához csak egy elsődleges kulcs tartozhat.

    Megjegyzés : Ne állítson be PRIMARY KEY megkötést olyan táblázathoz, amely már rendelkezik elsődleges kulccsal. Ha így tesz, hibát fog jelezni a rendszer.

  • Idegen kulcsként a FOREIGN KEY foglalt szót használva jelölhet meg mezőket. Ha az idegen tábla elsődleges kulcsa egynél több mezőből áll, többmezős megkötést kell használnia, felsorolva az összes hivatkozó mezőt, az idegen tábla nevét és az idegen tábla hivatkozott mezőinek a nevét ugyanabban a sorrendben, ahogy a hivatkozó mezők fel lettek sorolva. Ha a hivatkozott mező vagy mezők alkotják az idegen tábla elsődleges kulcsát, a hivatkozott mezőket nem kell megadni. Alapértelmezés szerint az adatbázismotor úgy jár el, mintha az idegen tábla elsődleges kulcsát alkotó mezők lennének a hivatkozott mezők.

    Az idegen kulcs megkötések meghatározott műveleteket írnak elő azokra az esetekre, amikor megváltozik az egyik megfelelő elsődleges kulcs értéke:

  • Megadhatja olyan műveletek végrehajtását az idegen táblán, melyek megfelelnek az elsődleges kulcson abban a táblában végrehajtott műveletnek, amelyhez a CONSTRAINT definiálva lett. Tekintse át például a Customers (Ügyfelek) elnevezésű táblára vonatkozó alábbi definíciót:

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

Most pedig tekintse meg az Orders (Rendelések) táblára vonatkozó alábbi definíciót, amely olyan idegen kulcs alapú kapcsolatot definiál, amely a Customers tábla elsődleges kulcsára hivatkozik.

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

Az idegen kulcshoz ON UPDATE CASCADE és ON DELETE CASCADE záradék is tartozik. Az ON UPDATE CASCADE záradék azt jelenti, hogy ha a Customer táblában megváltozik az egyik ügyfél azonosítója (CustId), a frissítést az Orders táblában is végrehajtja a rendszer. Ez azt jelenti, hogy automatikusan frissíteni fog minden olyan megrendelést az új értékkel, amely tartalmazza a megfelelő ügyfélazonosítót. Az ON DELETE CASCADE záradék azt jelenti, hogy ha egy ügyfelet törölnek a Customer táblából, az Orders tábla összes olyan sorát törölni kell, amelyben szerepel ez az ügyfélazonosító.

Tekintse meg ezt az Orders táblára vonatkozó másik definíciót, amely a CASCADE művelet helyett a SET NULL műveletet használja:

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

Az ON UPDATE SET NULL záradék hatására az egyik ügyfél azonosítójának Customer táblában történő (CustId) módosításakor az Orders tábla megfelelő idegen kulcs értékeit automatikusan NULL értékre állítja a rendszer. Hasonlóképpen az ON DELETE SET NULL záradék hatására, egy ügyfél Customer táblából való törlésekor az Orders tábla megfelelő idegen kulcs értékeit NULL-ra fogja állítani a rendszer.

Az idegen kulcsokhoz tartozó indexek automatikus létrehozása a NO INDEX módosítóval akadályozható meg. Idegen kulcsot csak abban az esetben érdemes ilyen módon definiálni, ha a létrejövő indexértékek gyakran ismétlődnének. Ha egy idegenkulcsindexben gyakran ismétlődő értékek szerepelnek, az index használatánál hatékonyabb egyszerűen átvizsgálni a táblát. A sorok táblába történő beszúrásának és táblából történő törlésének követése ilyen típusú index esetén csak rontja a teljesítményt, és nem jár semmilyen előnnyel.



Ismeretek bővítése
Oktatóanyagok megismerése
Új szolgáltatások listájának lekérése
Részvétel az Office Insider programban

Hasznos volt az információ?

Köszönjük a visszajelzését!

Köszönjük visszajelzését. Jobbnak látjuk, ha az Office egyik támogatási szakemberéhez irányítjuk.

×