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 efterFOREIGN 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_idkolonnen icontactstabellen 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 NULLindstiller 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