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
jaON 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
Vastaa