Yhteenveto: tässä opetusohjelmassa opit, PostgreSQL ulko-näppäintä ja miten lisätä ulkomaisten avaimet taulukoita käyttäen viiteavain rajoitteet.

Johdanto PostgreSQL Foreign Key Constraint

viiteavain on sarake tai ryhmä sarakkeita taulukkoon, että viittaus perusavain toisen pöydän.

vierasta avainta sisältävää taulukkoa kutsutaan viittaustaulukoksi tai lapsitaulukoksi. Ja vieraalla avaimella viitattua taulukkoa kutsutaan viitatuksi taulukoksi tai vanhempainpöydäksi.,

taulukossa voi olla useita ulkomaisia avaimia riippuen sen suhteista muihin taulukoihin.

PostgreSQL: ssä määrittelet ulkomaisen avaimen ulkomaisen avaimen rajoituksen avulla. Ulkomainen avainrajoitus auttaa säilyttämään tiedon viitteellisen eheyden lapsen ja vanhemman taulukoiden välillä.

viiteavain rajoite osoittaa, että arvojen sarakkeen tai ryhmä sarakkeita lapsi taulukko tasa-arvoja sarakkeen tai ryhmä sarakkeita vanhemman taulukko.,

PostgreSQL foreign key constraint syntaksi

seuraava esimerkki kuvaa foreign key constraint syntaksi:

tämä syntaksi:

  • Ensimmäinen, määritä nimi foreign key constraint jälkeen CONSTRAINT avainsana. CONSTRAINT lauseke on valinnainen. Jos jätät sen, PostgreSQL määrittää automaattisen tuotetun nimen.
  • Toiseksi, määritä yksi tai useampi ulkomainen avain sarakkeet jälkeen suluissa FOREIGN KEY avainsanat.,
  • Kolmas, määritä ylätason taulukon ja vanhemman avain sarakkeet viitataan ulko-avain sarakkeet lauseke.
  • Lopuksi, määrittää, delete-ja update-toiminnoissa ON DELETE ja ON UPDATE lausekkeita.

delete-ja update-toiminnoissa määrittää käyttäytymistä, kun ensisijainen avain vanhemman taulukko on poistettu ja päivitetty. Koska pääavainta päivitetään harvoin, ON UPDATE action ei käytetä käytännössä usein. Keskitymme ON DELETE toimintaan.,

PostgreSQL tukee seuraavia toimia:

  • SET NULL
  • ASETTAA OLETUS
  • RAJOITTAA
  • EI toimenpiteitä
  • PUTOUS

PostgreSQL foreign key constraint esimerkkejä

seuraavat lausunnot luo customers ja contacts taulukot:

tässä esimerkissä customers taulukko on vanhemman pöytä ja contacts taulukko on lapsi taulukko.

jokaisella asiakkaalla on nolla tai paljon kontakteja ja jokainen kontakti kuuluu nollaan tai yhteen asiakkaaseen.,

customer_id sarake contacts taulukko on viiteavain-sarake, joka viittaa perusavain-sarake, jolla on sama nimi customers taulukko.

seuraavat foreign key constraint fk_customer contacts taulukko määritellään customer_id kuten ulko-näppäintä:

Koska foreign key constraint ei ole ON DELETE ja ON UPDATE toiminta, he oletuksena NO ACTION.,

EI TOIMINTA

seuraavat terät tiedot customers ja contacts taulukot:

seuraavan lausuman poistaa asiakkaan id 1 customers taulukko:

Code language: SQL (Structured Query Language) (sql)

Koska ON DELETE NO ACTION, PostgreSQL kysymyksiä rajoituksen vastaisesti, koska linkitykset riviä asiakas id 1 on vielä olemassa contacts taulukko:

RESTRICT toiminta on samanlainen NO ACTION., Ero syntyy vain, kun määrität foreign key constraint kuten DEFERRABLE, jossa INITIALLY DEFERRED tai INITIALLY IMMEDIATE – tilassa. Keskustelemme tästä lisää seuraavassa opetussuunnitelmassa.

SET NULL

SET NULL asettaa automaattisesti NULL ulko-avain sarakkeita vertailemalla riviä lapsi taulukko, kun viitataan rivien vanhemman taulukko poistetaan.,

seuraavat lausunnot pudota näyte taulukot ja uudelleen luoda niitä viiteavain, joka käyttää SET NULL toiminta ON DELETE lauseke:

seuraavat lausunnot aseta tiedot customers ja contacts taulukot:

miten SET NULL toimii, katsotaanpa poistaa asiakkaan kanssa id 1 customers taulukko:

Code language: SQL (Structured Query Language) (sql)

Koska ON DELETE SET NULL toiminta, linkitykset rivit contacts taulukko NULL., Seuraava lausuma näyttää tiedot contacts taulukko:

Kuten voidaan nähdä selvästi, lähtö, rivit, jotka ovat customer_id 1 nyt customer_id asetetaan NULL

PUTOUS

ON DELETE CASCADE poistaa automaattisesti kaikki viittaa rivien lapsi taulukko, kun viitataan rivien vanhemman taulukko poistetaan., Käytännössä ON DELETE CASCADE on yleisimmin käytetty vaihtoehto.

seuraavat lausunnot luoda näyte taulukot.,iv> muutokset CASCADE:

seuraavan lausuman poistaa asiakkaan tunnus 1:

Koska ON DELETE CASCADE toiminta, kaikki linkitykset rivit contacts taulukko poistetaan automaattisesti:

ASETA OLETUKSEKSI

ON DELETE SET DEFAULT asettaa oletusarvo viiteavain-sarake viittaa rivien lapsi taulukko, kun viitataan rivien vanhemman taulukko poistetaan.,nt olemassa olevaan taulukko

add foreign key constraint nykyisen taulukon, voit käyttää seuraavaa muotoa ALTER TABLE selvitys:

Kun lisäät foreign key constraint ON DELETE CASCADE mahdollisuus aiemmin luotuun taulukkoon, sinun täytyy noudattaa näitä ohjeita:

Ensimmäinen, pudota olemassa olevia ulkomaisia rajoitteet:

Code language: SQL (Structured Query Language) (sql)

Ensinnäkin, lisätä uuden foreign key constraint ON DELETE CASCADE toiminta:

tässä opetusohjelmassa, sinun on oppinut PostgreSQL ulkomaiset avaimet ja miten käyttää foreign key constraint luoda ulkomaisten avaimet pöydälle.,

  • Auttoiko tämä opetusohjelma ?
  • YesNo