Articles

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 taulukko NULL 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 on NULL, 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 taulukko NULL 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.