SQL Server viiteavain
Yhteenveto: tämä opetusohjelma, opit, miten voit käyttää SQL Server foreign key constraint toimeenpanemiseksi yhteys tietoja kahden taulukoita.
Johdanto SQL Server foreign key constraint
Harkitse seuraavia vendor_groups
ja vendors
taulukot:
Jokainen myyjä kuuluu toimittajan ryhmä ja jokainen myyjä ryhmä voi olla nolla tai enemmän myyjiä. Suhde vendor_groups
ja vendors
taulukot on yksi-moneen.,
jokainen rivi vendors
taulukko, voit aina löytää vastaava rivi vendor_groups
taulukko.
Kuitenkin, nykyinen taulukot setup, voit lisätä rivin vendors
taulukko ilman vastaavaa rivi vendor_groups
taulukko. Vastaavasti voit myös poistaa rivi vendor_groups
taulukko ilman päivittäminen tai poistaminen vastaavat rivit vendors
taulukko, joka johtaa orvoksi rivit vendors
taulukko.,
valvoa yhteys tiedot vendor_groups
ja vendors
pöydät, sinun täytyy perustaa ulko-näppäile vendors
taulukko.
viiteavain on sarake tai ryhmä sarakkeita yhteen taulukkoon, joka yksilöi rivin toinen taulukko (tai saman pöydän tapauksessa self-reference).
ulkomaisen avaimen luomiseksi käytetäänFOREIGN KEY
rajoitetta.,
seuraavat lausunnot pudota vendors
taulukko ja luoda sen FOREIGN KEY
rajoitus:
vendor_groups
taulukko nyt on nimeltään vanhempi, että taulukko on taulukko, johon foreign key constraint viittauksia. vendors
taulukko on nimeltään lapsi taulukko, joka on taulukko, johon viiteavain rajoitus on sovellettu.,
selvitys edellä, seuraava lauseke luo FOREIGN KEY
rajoitus nimeltä fk_group
linkkejä group_id
vendors
taulukko group_id
vendor_groups
taulukko:
SQL Server FOREIGN KEY constraint syntaksi
yleinen syntaksi luodaan FOREIGN KEY
rajoitus on seuraava:
tarkastellaan tämän syntaksin yksityiskohtaisesti.,
määritä Ensin FOREIGN KEY
rajoite nimen jälkeen CONSTRAINT
avainsana. Rajoitus nimi on valinnainen, sen vuoksi on mahdollista määritellä FOREIGN KEY
rajoite seuraavasti:
tässä tapauksessa SQL Server luo automaattisesti nimi FOREIGN KEY
rajoite.
Toiseksi, määritä luettelo pilkuilla eroteltu ulko-avain sarakkeet suljettu suluissa jälkeen FOREIGN KEY
avainsana.,
Kolmanneksi, määritä nimi vanhemman taulukko, johon viiteavain viittauksia ja luettelo pilkuilla eroteltu sarakkeet, jotka on yhteys sarake lapsi taulukossa.
SQL Server FOREIGN KEY constraint esimerkki
Ensinnäkin, lisätä joitakin rivejä vendor_groups
taulukko:
Toiseksi, lisätä uuden toimittajan kanssa toimittajan ryhmän sisälle vendors
taulukko:
Code language: SQL (Structured Query Language) (sql)
selvitys toimi odotetusti.,
Kolmanneksi, yritä lisätä uusi toimittaja, jonka toimittajaryhmä ei ole olemassa vendor_groups
taulukko:
Code language: SQL (Structured Query Language) (sql)
SQL Server antoi seuraavan virheilmoituksen:
tässä esimerkissä, koska FOREIGN KEY
rajoite, SQL-Palvelin hylkäsi lisää ja antoi virheilmoituksen.
Referentiaaliset toimet
ulkomainen keskeinen rajoitus takaa viitteellisen eheyden. Se tarkoittaa, että voit lisätä rivin lapsen pöytään vain, jos vanhempainpöydässä on vastaava rivi.,
Lisäksi, foreign key constraint avulla voit määrittää viite toimia, kun rivi vanhemman taulukko on päivitetty tai poistettu seuraavasti:
ON UPDATE
ja ON DELETE
määrittää, mikä toiminto suoritetaan, kun rivi vanhemman taulukko on päivitetty ja poistettu., Seuraavat ovat sallittuja toimia : NO ACTION
, CASCADE
, SET NULL
ja SET DEFAULT
Poista toimien rivien vanhemman pöytä
Jos poistat yhden tai useampia rivejä vanhemman taulukko, voit määrittää yhden seuraavista toimista:
-
ON DELETE NO ACTION
: SQL Server herättää virhe ja rullaa takaisin poistaa toiminnan rivin vanhemman taulukko. -
ON DELETE CASCADE
: SQL Server poistaa rivejä lapsi taulukko, joka on vastaava rivi poistetaan vanhemman taulukko., -
ON DELETE SET NULL
: SQL Server määrittää rivien lapsi taulukkoNULL
jos vastaavaa riviä vanhemman taulukko poistetaan. Tämän toiminnon toteuttamiseksi ulkomaisten avainpylväiden on oltava nollattavissa. -
ON DELETE SET DEFAULT
SQL Server-sarjaa rivit lapsi taulukossa oletusarvoihinsa jos vastaavaa riviä vanhemman taulukko poistetaan. Tämän toiminnon toteuttamiseksi ulkomaisilla avainpalstoilla on oltava oletusmääritelmät. Huomaa, että nollattavan sarakkeen oletusarvo onNULL
, jos oletusarvoa ei ole määritelty.,
oletuksena, SQL Server koskeeON DELETE NO ACTION
jos et määritä nimenomaisesti mitään.
Päivitys-toiminto, rivien vanhemman pöytä
Jos päivität yksi tai useampia rivejä vanhemman taulukon, voit määrittää jonkin seuraavista toiminnoista:
-
ON UPDATE NO ACTION
: SQL Server herättää virhe ja rullaa takaisin päivitys-toiminto, rivi vanhemman taulukko. -
ON UPDATE CASCADE
: SQL Server-päivitykset vastaavat rivit lapsi taulukko, kun rivit vanhemman taulukko päivitetään., -
ON UPDATE SET NULL
: SQL Server määrittää rivien lapsi taulukkoNULL
kun vastaava rivi vanhemman taulukko on päivitetty. Huomaa, että ulkomaisten avain sarakkeet on nullable tämän toiminnon suorittamiseen. -
ON UPDATE SET DEFAULT
: SQL Server määrittää oletusarvot rivit lapsi taulukko, jossa on vastaavat rivit vanhemman taulukko päivitetty.