Office
Log på

Delsætningen CONSTRAINT

En begrænsning svarer til et indeks, men den kan også bruges til at etablere et relation til en anden tabel.

Du kan bruge CONSTRAINT-delsætningen i ALTER TABLE- og CREATE TABLE-sætningerne til at oprette eller slette begrænsninger. Der findes to typer CONTRAINT-delsætninger: én beregnet til at oprette en begrænsning i et enkelt felt og én til at oprette en begrænsning på flere end ét felt.

Bemærk!: Microsoft Access-databaseprogrammet understøtter ikke brugen af CONSTRAINT, eller nogen andre sproglige datadefinitionssætninger, med databaser, der ikke er Microsoft Access. Brug DAO Create-metoder i stedet.

Syntaks

Begrænsning for enkelt felt:

CONSTRAINT name {PRIMARY KEY | UNIQUE | NOT NULL |
REFERENCES foreigntable [(foreignfield1, foreignfield2)]
[ON UPDATE CASCADE | SET NULL]
[ON DELETE CASCADE | SET NULL]}

Begrænsning med flere felter:

CONSTRAINT name
{PRIMARY KEY (primary1[, primary2 [, ...]]) |
UNIQUE (unique1[, unique2 [, ...]]) |
NOT NULL (notnull1[, notnull2 [, ...]]) |
FOREIGN KEY [NO INDEX] (ref1[, ref2 [, ...]]) REFERENCES foreigntable [(foreignfield1 [, foreignfield2 [, ...]])]
[ON UPDATE CASCADE | SET NULL]
[ON DELETE CASCADE | SET NULL]}

CONSTRAINT-delsætningen har følgende dele:

Del

Beskrivelse

name

Navnet på den begrænsning, der skal oprettes.

primary1, primary2

Navnet på det eller de felter, der skal angives som primær nøgle.

unique1, unique2

Navnet på det eller de felter, der skal angives som en entydig nøgle.

notnull1, notnull2

Navnet på det eller de felter, der er begrænset til værdier, der ikke er Null.

ref1, ref2

Navnet på et fremmed nøgle-felt eller -felter, der refererer til felter i en anden tabel.

foreigntable

Navnet på den fremmed tabel med det eller de felter, der er angivet i foreignfield.

foreignfield1, foreignfield2

Navnet på det eller de felter i foreigntable, der er angivet i ref1, ref2. Du kan udelade denne delsætning, hvis det refererede felt er den primære nøgle for foreigntable.


Bemærkninger

Du kan bruge syntaksen for en begrænsning for et enkelt felt i delsætningen for feltdefinitionen i en ALTER TABLE- eller CREATE TABLE-sætning, der følger umiddelbart efter specifikationen af feltets datatype.

Du kan bruge syntaksen for en begrænsning for flere felter, når du bruger reserveret ord CONSTRAINT uden for en delsætning for feltdefinitionen i en ALTER TABLE- eller CREATE TABLE-sætning.

Du kan bruge CONSTRAINT til at angive et felt som en af de følgende begrænsningstyper:

  • Du kan bruge det reserverede ord UNIQUE til at angive et felt som en entydig nøgle. Det betyder, at der ikke kan være to poster i tabellen med samme værdi i feltet. Du kan begrænse alle felter eller liste over felter som værende entydige. Hvis en begrænsning for flere felter er angivet som en entydig nøgle, skal de kombinerede værdier af alle felter i indekset være entydige, selvom to eller flere poster har den samme værdi i kun et af felterne.

  • Du kan bruge de reserverede ord PRIMARY KEY til at angive et felt eller et sæt af felter i en tabel som en primær nøgle. Alle værdier i den primære nøgle skal være entydige og ikke Null, og der kan kun være én primær nøgle for en tabel.

    Bemærk!: Undlad at angive en PRIMARY KEY-begrænsning i en tabel, der allerede har en primær nøgle. Hvis du gør det, opstår der en fejl.

  • Du kan bruge de reserverede ord FOREIGN KEY til at angive et felt som en fremmed nøgle. Hvis den fremmede tabels primære nøgle består af mere end ét felt, skal du bruge en definition for begrænsning for flere felter med en liste over alle referencefelterne, navnet på den fremmede tabel og navnene på referencefelterne i den fremmede tabel i den samme rækkefølge, som referencefelterne står i på listen. Hvis referencefeltet eller -felterne er den fremmede tabels primære nøgle, behøver du ikke angive referencefelterne. Som standard fungerer databaseprogrammet, som om den fremmede tabels primære nøgle er referencefelterne.

    Fremmed nøgle-begrænsninger definerer bestemte handlinger, der skal udføres, når en tilsvarende værdi for en primær nøgle ændres:

  • Du kan angive handlinger, der skal udføres på den fremmede tabel baseret på en tilsvarende handling, der er udført på en primær nøgle i tabellen, hvor CONSTRAINT er defineret. Se f.eks. følgende definition af tabellen Customers:

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

Se følgende definition af tabellen Orders, der definerer en relation med en fremmed nøgle med reference til den primære nøgle i Customers-tabellen:

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

Både en ON UPDATE CASCADE- og en ON DELETE CASCADE-delsætning er defineret på den fremmede nøgle. Delsætningen ON UPDATE CASCADE betyder, at hvis en kundes id (CustId) opdateres i Customer-tabellen, bliver opdateringen videreført til Orders-tabellen. Hver ordre, der indeholder en tilsvarende værdi for kunde-id, bliver automatisk opdateret med den nye værdi. Delsætningen ON DELETE CASCADE betyder, at hvis en kunde slettes fra tabellen Customer, så slettes alle rækker i tabellen Orders, der indeholder den samme værdi for kunde-id også.

Se den følgende anderledes definition af tabellen Orders ved hjælp af SET NULL-handlingen i stedet for CASCADE-handlingen:

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

Delsætningen ON UPDATE SET NULL betyder, at hvis en kundes id (CustId) opdateres i tabellen Customer, så indstilles de tilsvarende værdier for en fremmede nøgle i tabellen Orders automatisk til NULL. Tilsvarende betyder delsætningen ON DELETE SET NULL, at hvis en kunde slettes fra tabellen Customer, så indstilles alle de tilsvarende fremmede nøgler i tabellen Orders automatisk til NULL.

For at forhindre automatisk oprettelse af indeks for fremmede nøgler kan man bruge modifikatoren NO INDEX. Denne form for definition af en fremmed nøgle bør kun bruges i tilfælde, hvor de resulterende indeksværdier hyppigt bliver duplikeret. Hvis værdierne i et indeks med fremmede nøgler hyppigt duplikeres, kan det være mindre effektivt end blot at udføre en tabelscanning. Vedligeholdelse af denne type af indeks, med rækker der indsættes i og slettes fra tabellen, forringer ydeevnen og giver ingen fordel.



Udvid dine Office-færdigheder
Gå på opdagelse i kurser
Få nye funktioner først
Bliv Office Insider

Var disse oplysninger nyttige?

Tak for din feedback!

Tak for din feedback! Det lyder, som om det vil kunne hjælpe, hvis du bliver sat i forbindelse med en af vores Office-supportteknikere.

×