Oppsummering: i denne opplæringen vil du lære om PostgreSQL, utenlandske nøkkel, og hvordan du legger til utenlandske nøkler til bord med utenlandske viktige begrensninger.
Introduksjon til PostgreSQL Foreign Key Constraint
En sekundærnøkkel er en kolonne eller en gruppe av kolonner i en tabell som refererer til primærnøkkelen i en annen tabell.
tabellen som inneholder De utenlandske nøkkel kalles referere til tabellen eller barn bordet. Og bordet er referert til av de utenlandske nøkkel kalles referansetabellen eller forelder bordet.,
En tabell kan ha flere utenlandske nøkler, avhengig av sine relasjoner til andre tabeller.
I PostgreSQL, kan du definere en utenlandsk tasten for å bruke utenlandske viktige begrensninger. Den foreign key constraint bidrar til å opprettholde referanseintegritet av data mellom barn og foreldre bord.
En foreign key constraint indikerer at verdiene i en kolonne eller en gruppe av kolonner i barnet tabell lik verdiene i en kolonne eller en gruppe med kolonner av den overordnede tabellen.,
PostgreSQL foreign key constraint syntaks
følgende illustrerer en foreign key constraint syntaks:
I denne syntaks:
- Første til å angi navnet for foreign key constraint etter
CONSTRAINT
søkeord.CONSTRAINT
klausulen er valgfritt. Hvis du utelater det, PostgreSQL vil tilordne en automatisk generert navn. - Andre, må du angi ett eller flere utenlandske nøkkel kolonner i parentes etter
FOREIGN KEY
søkeord., - Tredje, angir den overordnede tabellen og foreldre-tasten kolonner referert til av de utenlandske nøkkel kolonner i
klausulen.
- til Slutt, angi slette og oppdatere handlinger i
ON DELETE
ogON UPDATE
klausuler.
slett og oppdatere handlinger bestemme atferd når den primære nøkkelen i den overordnede tabellen er slettet og oppdatert. Siden den primære nøkkelen er sjelden oppdatert, ON UPDATE action
er ikke ofte brukt i praksis. Vi vil fokusere på ON DELETE
action.,
PostgreSQL støtter følgende handlinger:
- ANGI NULL
- ANGI som STANDARD
- BEGRENSE
- INGEN TILTAK
- CASCADE
PostgreSQL foreign key constraint eksempler
følgende uttalelser skape customers
og contacts
tabeller:
I dette eksempelet customers
tabellen er den overordnede tabellen og contacts
tabellen er barn bordet.
Hver kunde har null eller mange kontakter og hver kontakt hører til null eller én kunde.,
customer_id
kolonne i contacts
tabellen er utenlandske nøkkel kolonne som refererer til primærnøkkelen kolonnen med samme navn i customers
tabell.
følgende foreign key constraint fk_customer
i contacts
tabellen definerer customer_id
som utenlandske nøkkel:
Fordi foreign key constraint ikke har ON DELETE
og ON UPDATE
action, de standard til NO ACTION
.,
INGEN TILTAK
følgende setter inn data i customers
og contacts
tabeller:
følgende uttalelse sletter kunde-id-1 customers
tabell:
Code language: SQL (Structured Query Language) (sql)
på Grunn av den ON DELETE NO ACTION
, PostgreSQL problemer en begrensning brudd fordi den refererer til rader av kunde-id-1 fortsatt eksisterer i contacts
tabell:
RESTRICT
action er lik NO ACTION
., Forskjellen bare oppstår når du angi foreign key constraint som DEFERRABLE
med INITIALLY DEFERRED
eller INITIALLY IMMEDIATE
modus. Vi vil diskutere mer om dette i den påfølgende veiledning.
ANGI NULL
SET NULL
angir automatisk NULL
til utenlandske nøkkel kolonner i referere rader av barn bordet når det refereres til rader i den overordnede tabellen er slettet.,
følgende uttalelser slippe eksempel tabeller og re-opprette dem med de utenlandske nøkkel som bruker SET NULL
action i ON DELETE
klausulen:
følgende uttalelser sette inn data i customers
og contacts
tabeller:
for Å se hvordan SET NULL
fungerer, la oss slette kunden med id 1 customers
tabell:
Code language: SQL (Structured Query Language) (sql)
på Grunn av den ON DELETE SET NULL
handling, den refererer til rader i contacts
bordet satt til NULL., Følgende uttalelse viser data i contacts
tabell:
Som kan sees tydelig fra utgang, radene som har customer_id
1 har nå customer_id
sett til NULL
CASCADE
ON DELETE CASCADE
sletter automatisk alle refererer til rader i barnet bordet når det refereres til rader i den overordnede tabellen er slettet., I praksis ON DELETE CASCADE
er det mest brukte alternativet.
følgende uttalelser gjenskape eksempel tabeller.,iv> forandringer til CASCADE
:
følgende uttalelse sletter kunde-id-1:
på Grunn av den ON DELETE CASCADE
handling, alle med referanse rader i contacts
bordet blir automatisk slettet:
ANGI som STANDARD
ON DELETE SET DEFAULT
angir standard verdi til utenlandske nøkkel kolonnen refererer til rader i barnet bordet når det refereres til rader fra den overordnede tabellen er slettet.,nt til en eksisterende tabell
for Å legge til en foreign key constraint til eksisterende tabell, bruker du følgende form av ALTER TABLE-setningen:
Når du legger til en foreign key constraint med ON DELETE CASCADE
alternativ til en eksisterende tabell, må du følge disse trinnene:
Først, slippe eksisterende utenlandske viktige begrensninger:
Code language: SQL (Structured Query Language) (sql)
Først, legge til en ny foreign key constraint med ON DELETE CASCADE
følgende:
I denne opplæringen, du har lært om PostgreSQL utenlandske nøkler, og hvordan du bruker den foreign key constraint å opprette utenlandske nøkler for en tabell.,
- Var denne opplæringen nyttig ?
- YesNo
Legg igjen en kommentar