CONSTRAINT, component

Een beperking is vergelijkbaar met een index, maar kan ook worden gebruikt om een relatie met een andere tabel tot stand te brengen.

U gebruikt de component CONSTRAINT in de instructies ALTER TABLE en CREATE TABLE om beperkingen te maken of te verwijderen. Er zijn twee typen CONSTRAINT-componenten: één om een beperking voor één veld in te stellen en één om een beperking voor meerdere velden in te stellen.

Opmerking: De Microsoft Access-database-engine biedt geen ondersteuning voor het gebruik van CONSTRAINT- of DDL-instructies voor niet-Microsoft Access-databases. Gebruik in plaats daarvan een DAO-methode.

Syntaxis

Beperking voor één veld:

CONSTRAINT naam {PRIMARY KEY | UNIQUE | NOT NULL |
REFERENCES refererendetabel [(refererendveld1, refererendveld2)]
[ON UPDATE CASCADE | SET NULL]
[ON DELETE CASCADE | SET NULL]}

Beperking voor meerdere velden:

CONSTRAINT naam
{PRIMARY KEY (primair1[, primair2 [, ...]]) |
UNIQUE (uniek1[, uniek2 [, ...]]) |
NOT NULL (niet-null1[, niet-null2 [, ...]]) |
FOREIGN KEY [NO INDEX] (ref1[, ref2 [, ...]]) REFERENCES refererendetabel [(refererendveld1 [, refererendveld2 [, ...]])]
[ON UPDATE CASCADE | SET NULL]
[ON DELETE CASCADE | SET NULL]}

De component CONSTRAINT bestaat uit de volgende onderdelen:

Onderdeel

Beschrijving

naam

De naam van de te maken beperking.

primair1, primair2

De naam van het veld of de velden die u als primaire sleutel wilt aanwijzen.

unique1, unique2

De naam van het veld of de velden die u als unieke sleutel wilt aanwijzen.

notnull1, notnull2

De naam van het veld of de velden die zijn beperkt tot niet-NULL-waarden.

ref1, ref2

De naam van een of meer velden met een refererende sleutel die verwijzen naar velden in een andere tabel.

foreigntable

De naam van de refererende tabel met het veld of de velden die worden aangegeven met refererendveld.

foreignfield1, foreignfield2

De naam van het veld of de velden in refererendetabel die worden aangegeven met ref1, ref2. U kunt deze component weglaten als het veld waarnaar wordt verwezen de primaire sleutel is van foreigntable.


Opmerkingen

De syntaxis voor een beperking voor één veld gebruikt u in de velddefinitiecomponent van een ALTER TABLE- of CREATE TABLE-instructie, direct na de specificatie van het gegevenstype voor het veld.

Gebruik de syntaxis voor een beperking voor meerdere velden wanneer u het gereserveerd woord CONSTRAINT buiten een velddefinitiecomponent in de instructie ALTER TABLE of CREATE TABLE gebruikt.

Met CONSTRAINT kunt u een veld aanwijzen als een veld met een van de volgende typen beperkingen:

  • Met het gereserveerde woord UNIQUE kunt u een veld aanwijzen als een unieke sleutel. Hiermee kunt u voorkomen dat twee records in de tabel dezelfde waarde hebben binnen dit veld. U kunt elk willekeurig veld of elke lijst met velden beperken als uniek. Als een beperking voor meerdere velden is aangewezen als een unieke sleutel, moet de combinatie van waarden in alle velden van de index uniek zijn, ook als twee of meer records dezelfde waarde in slechts één van de velden hebben.

  • Met de gereserveerde woorden PRIMARY KEY kunt u één veld of set velden in een tabel aanwijzen als primaire sleutel. Alle waarden in de primaire sleutel moeten uniek zijn en niet Null,en er kan slechts één primaire sleutel voor een tabel zijn.

    Opmerking: Stel geen PRIMARY KEY-beperking in voor een tabel die al een primaire sleutel heeft. Doet u dit wel, dan treedt er een fout op.

  • Met de gereserveerde woorden FOREIGN KEY kunt u een veld als refererende sleutel aanwijzen. Als de primaire sleutel van de refererende tabel uit meerdere velden bestaat, moet u een beperking voor meerdere velden definiëren, waarbij u de volgende zaken opgeeft: alle refererende velden, de naam van de refererende tabel en de namen van de velden in de refererende tabel waarnaar wordt verwezen, en wel in dezelfde volgorde als waarin de overeenkomstige refererende velden zijn opgegeven. Als het veld of de velden waarnaar wordt verwezen, de primaire sleutel zijn van de refererende tabel, hoeft u de velden waarnaar wordt verwezen niet op te geven. In de database-engine wordt standaard aangenomen dat de primaire sleutel van de refererende tabel bestaat uit het veld of de velden waarnaar wordt verwezen.

    Met beperkingen van refererende sleutels worden specifieke acties gedefinieerd die moeten worden uitgevoerd wanneer de overeenkomstige waarde van een primaire sleutel wordt gewijzigd:

  • U kunt acties opgeven die in de refererende tabel moeten worden uitgevoerd op basis van een corresponderende actie voor een primaire sleutel in de tabel waarvoor de CONSTRAINT is gedefinieerd. Voor de tabel Klanten kan bijvoorbeeld de volgende definitie bestaan:

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

In de volgende definitie voor de tabel Orders wordt een refererende-sleutelrelatie vastgelegd waarbij aan de primaire sleutel van de tabel Klanten wordt gerefereerd:

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

Voor de refererende sleutel zijn zowel de component ON UPDATE CASCADE als de component ON DELETE CASCADE gedefinieerd. De component ON UPDATE CASCADE geeft aan dat als de klant-id wordt bijgewerkt in de tabel Klanten, de tabel Orders trapsgewijs wordt bijgewerkt. Elke order met een corresponderende klant-id wordt automatisch bijgewerkt met de nieuwe waarde. De component ON DELETE CASCADE geeft aan dat als een klant wordt verwijderd uit de tabel Klanten, alle rijen in de tabel Orders met dezelfde klant-id ook worden verwijderd.

In de volgende definitie van de tabel Orders wordt de actie SET NULL gebruikt in plaats van de actie 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

De component ON UPDATE SET NULL geeft aan dat als de klant-id wordt bijgewerkt in de tabel Klanten, de corresponderende refererende-sleutelwaarden in de tabel Orders automatisch worden ingesteld op NULL. Evenzo geeft de component ON DELETE SET NULL aan dat als een klant uit de tabel Klanten wordt verwijderd, alle corresponderende refererende sleutels in de tabel Orders automatisch worden ingesteld op NULL.

Om te voorkomen dat er automatisch indexen voor vreemde sleutels worden gemaakt, kan de instelling GEEN INDEX worden gebruikt. Deze vorm van definitie van de foreign-sleutel mag alleen worden gebruikt in gevallen waarin de resulterende indexwaarden vaak worden gedupliceerd. Wanneer de waarden in een index met een vreemde sleutel vaak worden gedupliceerd, kan het gebruik van een index minder efficiënt zijn dan het uitvoeren van een tabelscan. Het handhaven van dit type index, met ingevoegde en verwijderde rijen uit de tabel, slechtere prestaties en biedt geen enkel voordeel.



Meer hulp nodig?

Uw Office-vaardigheden uitbreiden
Training verkennen
Als eerste nieuwe functies krijgen
Deelnemen aan Office Insiders

Was deze informatie nuttig?

Bedankt voor uw feedback.

Hartelijk dank voor uw feedback! Het lijkt ons een goed idee om u in contact te brengen met een van onze Office-ondersteuningsagenten.

×