resum.: i denne vejledning lærer du om Postgres .l fremmed nøgle, og hvordan du tilføjer udenlandske nøgler til tabeller ved hjælp af udenlandske nøglebegrænsninger.
Introduktion til PostgreSQL Foreign Key Constraint
En fremmed nøgle er en kolonne eller en gruppe af kolonner i en tabel, der refererer til den primære nøgle i en anden tabel.
tabellen, der indeholder den fremmede nøgle, kaldes referencetabellen eller barnetabellen. Og tabellen, der henvises til af den udenlandske nøgle, kaldes den refererede tabel eller forældertabellen.,
en tabel kan have flere udenlandske nøgler afhængigt af dens forhold til andre tabeller.
i Postgres .l definerer du en fremmed nøgle ved hjælp af den udenlandske nøglebegrænsning. Den udenlandske nøglebegrænsning hjælper med at opretholde den referentielle integritet af data mellem barn-og forældertabellerne.
en fremmed nøglebegrænsning angiver, at værdier i en kolonne eller en gruppe af kolonner i barnetabellen svarer til værdierne i en kolonne eller en gruppe kolonner i overordnet tabel.,
PostgreSQL foreign key constraint syntaks
følgende illustrerer en foreign key constraint syntax:
I denne syntaks:
- Første, skal du angive navnet for foreign key constraint efter
CONSTRAINT
søgeord.CONSTRAINT
klausul er valgfri. Hvis du udelader det, vil Postgres .l tildele en auto-genereret navn. - for det andet skal du angive en eller flere fremmede nøglekolonner i parentes efter
FOREIGN KEY
nøgleord., - for det tredje skal du angive kolonner for overordnet tabel og overordnet nøgle, der henvises til af kolonnerne for fremmed nøgle i
klausul.
- Angiv endelig slet og opdater handlinger i
ON DELETE
ogON UPDATE
klausuler.
slet og opdater handlingerne bestemmer adfærd, når den primære nøgle i overordnet tabel slettes og opdateres. Da den primære nøgle sjældent opdateres, bruges ON UPDATE action
ikke ofte i praksis. Vi vil fokusere på ON DELETE
handling.,
PostgreSQL understøtter følgende handlinger:
- ANGIV NULL
- ANGIV som STANDARD
- BEGRÆNSE
- INGEN HANDLING
- CASCADE
PostgreSQL foreign key constraint eksempler
følgende udsagn skaber customers
og contacts
tabeller:
I dette eksempel customers
tabel er den overordnede tabel, og contacts
tabel er barnet bordet.
hver kunde har nul eller mange kontakter, og hver kontakt tilhører nul eller en kunde.,
customer_id
kolonnen icontacts
tabellen er den fremmede nøglekolonne, der refererer til den primære nøglekolonne med samme navn icustomers
tabel.
følgende foreign key constraint fk_customer
contacts
tabel definerer customer_id
som fremmed nøgle:
Fordi foreign key constraint ikke har ON DELETE
og ON UPDATE
handling, de som standard NO ACTION
.,
INGEN HANDLING
følgende indsætter data i customers
og contacts
tabeller:
følgende erklæring sletter kunde id 1 fra customers
tabel:
Code language: SQL (Structured Query Language) (sql)
på Grund af det ON DELETE NO ACTION
PostgreSQL spørgsmål en begrænsning krænkelse, fordi det refererer til rækker af kunde-id-1, der stadig findes i contacts
tabel:
RESTRICT
handling svarer til NO ACTION
., Forskellen opstår kun, når du definerer fremmednøglebegrænsningen som DEFERRABLE
med en INITIALLY DEFERRED
eller INITIALLY IMMEDIATE
tilstand. Vi vil diskutere mere om dette i den efterfølgende tutorial.
Indstil NULL
SET NULL
indstiller automatiskNULL
til kolonner med fremmed nøgle i henvisningsrækkerne i barnetabellen, når de refererede rækker i overordnet tabel slettes.,
følgende udsagn drop prøven borde og genskabe dem med den fremmede nøgle, der bruger koden SET NULL
handling ON DELETE
klausul:
følgende udsagn indsætte data i customers
og contacts
tabeller:
for At se, hvordan SET NULL
virker, så lad os slette kunden med id 1 fra customers
tabel:
Code language: SQL (Structured Query Language) (sql)
på Grund af det ON DELETE SET NULL
handling, den refererer rækker i contacts
tabel er angivet til NULL., Den følgende sætning viser data i contacts
tabel:
Som det kan ses tydeligt fra output, de rækker, der har customer_id
1 har nu customer_id
sæt NULL
CASCADE
ON DELETE CASCADE
sletter automatisk alle de henvisninger, der rækker barn bordet, når der refereres til rækker i den overordnede tabel, slettes., I praksis er ON DELETE CASCADE
den mest almindeligt anvendte mulighed.
følgende udsagn genskaber eksempeltabellerne.,iv> ændringer CASCADE
:
følgende erklæring sletter kunde-id ‘ et 1:
på Grund af det ON DELETE CASCADE
action, alle henvisninger rækker i contacts
tabel slettes automatisk:
INDSTIL STANDARD
ON DELETE SET DEFAULT
sæt standardværdien til den fremmede nøgle kolonne refererer rækker i barnet bordet, når der refereres til, rækker fra den overordnede tabel, er slettet.,nt til en eksisterende tabel
for At tilføje en foreign key constraint til den eksisterende tabel, skal du bruge følgende form af ALTER TABLE-sætning:
Når du tilføjer en foreign key constraint med ON DELETE CASCADE
option til en eksisterende tabel, skal du følge disse trin:
for det Første, drop eksisterende fremmed nøgle begrænsninger:
Code language: SQL (Structured Query Language) (sql)
Først skal du tilføje en ny foreign key constraint med ON DELETE CASCADE
handling:
I denne tutorial, du har lært om PostgreSQL fremmede nøgler, og hvordan du bruger foreign key constraint til at skabe fremmed nøgle for en tabel.,
- var denne vejledning nyttig ?
- YesNo
Skriv et svar