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 og ON 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