Delsætningen CONSTRAINT

Vigtigt: Denne artikel er maskinoversat. Se ansvarsfraskrivelsen. Du kan finde den engelske version af denne artikel her til din orientering.

En begrænsning fungerer som et indeks, selvom den også kan bruges til at oprette en relation til en anden tabel.

Du kan bruge delsætningen CONSTRAINT i ALTER TABLE- og CREATE TABLE-sætninger til at oprette eller slette begrænsninger. Der er to typer CONSTRAINT-delsætninger: en til oprettelse af en begrænsning for et enkelt felt, og en til oprettelse af en begrænsning for flere felter.

Bemærk: Microsoft Access database engine understøtter ikke brug af CONSTRAINT eller data definition language sætninger, med Microsoft Access-databaser. Brug DAO Create-metoderne i stedet.

Syntaks

Begrænsning for ét felt:

Navn på BETINGELSE {PRIMÆRNØGLE | ENTYDIGE | IKKE NULL |
REFERENCER foreignTabel [(foreignfield1, foreignfield2)]
[på OPDATER KASKADEVIS | ANGIV som NULL]
[på SLET KASKADEVIS | ANGIV SOM NULL]}

Begrænsning for flere felter:

Navnpå BETINGELSE
{PRIMÆRNØGLE (primary1[, primary2 [,...]]) |
ENTYDIGE (unique1[, unique2 [,...]]) |
IKKE NULL (notnull1[, notnull2 [,...]]) |
FREMMED NØGLE [INGEN INDEKS] (Reference1[, reference2 [,...]]) REFERENCER foreigntable [(foreignfield1 [, foreignfield2 [,...]])]
[På OPDATER KASKADEVIS | ANGIV som NULL]
[på SLET KASKADEVIS | ANGIV SOM NULL]}

Delsætningen CONSTRAINT består af følgende dele:

Del

Beskrivelse

navn

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

primær1, primær2

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

unik1, unik2

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

ikkenull1, ikkenull2

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

ref1, ref2

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

fremmedtabel

Navnet på den fremmed tabel, der indeholder det eller de felter, der er angivet ved fremmedfelt.

fremmedfelt1, fremmedfelt2

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


Bemærkninger

Du kan bruge syntaksen til en begrænsning for ét felt i feltdefinitionsdelsætningen i en ALTER TABLE- eller CREATE TABLE-sætning umiddelbart efter angivelsen af feltets datatype.

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

Ved hjælp af CONSTRAINT kan du angive et felt som en af følgende typer begrænsninger:

  • Du kan bruge det reserverede ord UNIQUE til at angive et felt som en unik nøgle. Det betyder, at to poster i tabellen ikke kan have den samme værdi i det pågældende felt. Hvis en begrænsning for flere felter er angivet som en unik nøgle, skal de kombinerede værdier i alle felter i indekset være forskellige, selvom to eller flere poster har den samme værdi i blot et af felterne.

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

    Bemærk: Undlad at angive en PRIMARY KEY-begrænsning for en tabel, der allerede har en primær nøgle. Gør du 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 primære nøgle for fremmed tabellen består af mere end ét felt, skal du bruge definitionen til begrænsning af flere felter, som indeholder alle de refererende felter, navnet på fremmed tabellen og navnene på de felter, der refereres til i fremmed tabellen, og de skal være i den samme rækkefølge, som de refererende felter. Hvis det eller de felter, der refereres til, er fremmed tabellens primær nøgle, behøver du ikke at angive felterne, der refereres til. Som standard går databaseprogrammet ud fra, at fremmed tabellens primære nøgle er felterne, der refereres til.

    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 for fremmed tabellen, som er baseret på en tilsvarende handling, der udføres for en primær nøgle i den tabel, som CONSTRAINT er defineret for. Se f.eks. nedenstående definition af tabellen Kunder:

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

Nedenfor vises definitionen på tabellen Ordrer, som definerer en fremmed nøgle-relation, der refererer til den primære nøgle i tabellen Kunder:

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

Der er defineret både en ON UPDATE CASCADE- og en ON DELETE CASCADE-delsætning for fremmed nøglen. Delsætningen ON UPDATE CASCADE angiver, at hvis en kundes id (CustId) opdateres i tabellen Kunde, udføres en kaskadevis opdatering gennem tabellen Ordrer. Hver ordre, der indeholder den pågældende kunde-id-værdi, opdateres automatisk med den nye værdi. Delsætningen ON DELETE CASCADE angiver, at hvis kunden er slettet fra tabellen Kunder, slettes alle rækker i tabellen Kunder, der indeholder den pågældende kunde-id-værdi også.

Nedenfor vises to forskellige definitioner af tabellen Ordrer, hvor handlingen SET NULL benyttes i stedet for handlingen 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

Delsætningen ON UPDATE SET NULL angiver, at hvis en kunde-id (CustId) opdateres i tabellen Kunder, angives de tilsvarende fremmed nøgle-værdier i tabellen Ordrer automatisk til NULL. Ligeledes angiver delsætningen ON DELETE SET NULL, at hvis en kunde slettes fra tabellen Kunder, angives alle de tilsvarende fremmed nøgler i tabellen Ordrer til NULL.

Hvis du vil forhindre automatisk oprettelse af indekser for fremmed nøgler, kan du bruge modifikatoren NO INDEX. Denne form for fremmed nøgle definition bør kun benyttes i det tilfælde, hvor de oprettede indeksværdier ofte dubleres. I de tilfælde, hvor værdierne i et fremmed nøgle-indeks ofte dubleres, er det ofte mere hensigtsmæssigt at foretage en simpel tabelscanning i stedet for at bruge et indeks. Vedligeholdelse af denne type indeks, hvor rækker indsættes og slettes fra tabellen, forringer ydeevnen og giver dig ingen fordele.



Bemærk: Ansvarsfraskrivelse for maskinoversættelse: Denne artikel er blevet oversat af et computersystem uden menneskelig indgriben. Microsoft tilbyder disse maskinoversættelse for at hjælpe ikke-engelsktalende brugere til at kunne nyde indhold om Microsofts produkter, tjenester og teknologier. Da artiklen er maskinoversat, kan den indeholde forkerte ord eller syntaks- eller grammatikfejl.

Udvid dine 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.

×