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 een of meer velden in een tabel als primaire sleutel aanwijzen. Alle waarden in de primaire sleutel moeten uniek zijn en mogen niet NULL zijn. Voor een tabel kan slechts één primaire sleutel bestaan.

    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.

Als u wilt voorkomen dat automatisch indices voor refererende sleutels worden gemaakt, kunt u NO INDEX gebruiken. Refererende sleutels definieert u alleen op deze manier in gevallen waarin de resulterende indexwaarden vaak worden gedupliceerd. Wanneer de waarden in een refererende-sleutelindex vaak worden gedupliceerd, kunt u beter gewoon een tabelscan uitvoeren. Dit is efficiënter. Als u dit type index bijhoudt, gaan de prestaties achteruit wanneer rijen in de tabel worden ingevoegd of eruit worden verwijderd, terwijl deze methode geen voordelen heeft.



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-ondersteuningsagents.

×