rezumat: în acest tutorial, veți afla despre cheia străină PostgreSQL și cum să adăugați chei străine la tabele folosind constrângeri cheie străină.
Introducere în constrângerea cheilor externe PostgreSQL
o cheie străină este o coloană sau un grup de coloane dintr-un tabel care face referire la cheia primară a unui alt tabel.
tabelul care conține cheia străină se numește tabelul de referință sau tabelul copilului. Și tabelul la care se face referire prin cheia străină se numește tabelul de referință sau tabelul părinte.,un tabel poate avea mai multe chei străine în funcție de relațiile sale cu alte tabele.
în PostgreSQL, definiți o cheie străină folosind constrângerea cheii străine. Constrângerea cheie străină ajută la menținerea integrității referențiale a datelor între tabelele copil și părinte.
o constrângere cheie străină indică faptul că valorile dintr-o coloană sau un grup de coloane din tabelul copil sunt egale cu valorile dintr-o coloană sau un grup de coloane din tabelul părinte.,
PostgreSQL restricție de cheie externă sintaxa
următoarele ilustrează o restricție de cheie externă sintaxa:
În această sintaxă:
- în Primul rând, specificați numele de restricție de cheie externă după
CONSTRAINT
cuvinte cheie. ClauzaCONSTRAINT
este opțională. Dacă o omiteți, PostgreSQL va atribui un nume generat automat. - în al doilea rând, specificați una sau mai multe coloane cheie străine în paranteze după cuvintele cheie
FOREIGN KEY
., - în al treilea rând, specificați tabelul părinte și coloanele cheie părinte la care se face referire de coloanele cheie străine în clauza
.
- în cele din Urmă, specifica șterge și actualiza acțiuni în
ON DELETE
șiON UPDATE
clauze.acțiunile de ștergere și actualizare determină comportamentele atunci când cheia primară din tabelul părinte este ștearsă și actualizată. Deoarece cheia primară este rar actualizată,ON UPDATE action
nu este adesea folosit în practică. Ne vom concentra peON DELETE
acțiune.,PostgreSQL suportă următoarele acțiuni:
- SET NULL
- SET DEFAULT
- RESTRICȚIONA
- NICI o ACȚIUNE
- CASCADĂ
PostgreSQL restricție de cheie externă exemple
următoarele afirmații crea
customers
șicontacts
mese:În acest exemplu,
customers
tabel este tabelul părinte șicontacts
tabel este tabelul copil.fiecare client are zero sau mai multe contacte și fiecare contact aparține zero sau un client.,
customer_id
coloană încontacts
masa este cheie externă coloană care face referire la cheia primară a unei coloane cu același nume încustomers
masă.următoarele foreign key constraint
fk_customer
încontacts
tabel defineștecustomer_id
ca cheie externă:Pentru restricție de cheie externă nu au
ON DELETE
șiON UPDATE
acțiune, au implicitNO ACTION
.,NICI o ACTIUNE
următoarele introduce date în
customers
șicontacts
tabeleurmătoarea declarație șterge id-ul de client 1 din
customers
tabel:Code language: SQL (Structured Query Language) (sql)Pentru
ON DELETE NO ACTION
, PostgreSQL probleme o constrângere încălcare, deoarece corelarea rânduri de id-ul de client 1 există încă încontacts
tabel:RESTRICT
acțiune este similar cuNO ACTION
., Diferența apare doar atunci când definiți restricție de cheie externă caDEFERRABLE
cu unINITIALLY DEFERRED
sauINITIALLY IMMEDIATE
modul. Vom discuta mai multe despre acest lucru în tutorialul ulterior.SET NULL
SET NULL
setează automatNULL
la cheie externă coloane în corelarea rânduri de tabel copilului atunci când face referire rânduri în tabelul părinte sunt șterse.,următoarele afirmații picătură de probă tabele și le re-creați cu cheie externă care utilizează
SET NULL
acțiune înON DELETE
clauză:următoarele afirmații introduce date în
customers
șicontacts
tabele:Pentru a vedea cum
SET NULL
funcționează, să ștergeți clientul cu id-ul 1 dincustomers
tabel:Code language: SQL (Structured Query Language) (sql)Pentru
ON DELETE SET NULL
acțiune, corelarea rânduri încontacts
masa setat la NULL., Următoarea declarație afișează datele încontacts
tabel:Cum poate fi văzut în mod clar de ieșire, rândurile care au
customer_id
1 au acumcustomer_id
seturi pentruNULL
CASCADĂ
ON DELETE CASCADE
șterge automat toate corelarea rânduri în tabelul de copil atunci când face referire rânduri în tabelul părinte sunt șterse., În practică, opțiuneaON DELETE CASCADE
este cea mai frecvent utilizată.următoarele afirmații recreează tabelele de probă.,iv> modificăriCASCADE
:următoarea declarație șterge id-ul de client 1:
Pentru
ON DELETE CASCADE
acțiune, toate corelarea rânduri încontacts
tabel sunt șterse în mod automat:SET DEFAULT
ON DELETE SET DEFAULT
setează valoarea implicită la cheie externă coloana de afiliere rânduri în tabelul de copil atunci când face referire rânduri din tabelul părinte sunt șterse.,nt la un tabel existentPentru a adăuga o restricție de cheie externă la tabelul deja existent, utilizați următoarea formă de ALTER TABLE declarație:
atunci Când adăugați o cheie externă constrângere cu
ON DELETE CASCADE
opțiune la un tabel existent, trebuie să urmați acești pași:în Primul rând, picătură existente constrângeri cheie străină:
Code language: SQL (Structured Query Language) (sql)în Primul rând, se adaugă o nouă restricție de cheie externă cu
ON DELETE CASCADE
actiune:În acest tutorial, ai învățat despre PostgreSQL chei externe și modul de utilizare restricție de cheie externă pentru a crea chei externe pentru o masă.,
- a fost acest tutorial util ?
- YesNo
Lasă un răspuns