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ă
CONSTRAINTcuvinte cheie. ClauzaCONSTRAINTeste 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 UPDATEclauze.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 actionnu este adesea folosit în practică. Ne vom concentra peON DELETEacț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șicontactsmese:În acest exemplu,
customerstabel este tabelul părinte șicontactstabel este tabelul copil.fiecare client are zero sau mai multe contacte și fiecare contact aparține zero sau un client.,
customer_idcoloană încontactsmasa este cheie externă coloană care face referire la cheia primară a unei coloane cu același nume încustomersmasă.următoarele foreign key constraint
fk_customerîncontactstabel defineștecustomer_idca cheie externă:Pentru restricție de cheie externă nu au
ON DELETEșiON UPDATEacțiune, au implicitNO ACTION.,NICI o ACTIUNE
următoarele introduce date în
customersșicontactstabeleurmătoarea declarație șterge id-ul de client 1 din
customerstabel: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ă încontactstabel:RESTRICTacțiune este similar cuNO ACTION., Diferența apare doar atunci când definiți restricție de cheie externă caDEFERRABLEcu unINITIALLY DEFERREDsauINITIALLY IMMEDIATEmodul. Vom discuta mai multe despre acest lucru în tutorialul ulterior.SET NULL
SET NULLsetează automatNULLla 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 NULLacțiune înON DELETEclauză:următoarele afirmații introduce date în
customersșicontactstabele:Pentru a vedea cum
SET NULLfuncționează, să ștergeți clientul cu id-ul 1 dincustomerstabel:Code language: SQL (Structured Query Language) (sql)Pentru
ON DELETE SET NULLacțiune, corelarea rânduri încontactsmasa setat la NULL., Următoarea declarație afișează datele încontactstabel:Cum poate fi văzut în mod clar de ieșire, rândurile care au
customer_id1 au acumcustomer_idseturi pentruNULLCASCADĂ
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 CASCADEeste 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 CASCADEacțiune, toate corelarea rânduri încontactstabel sunt șterse în mod automat:SET DEFAULT
ON DELETE SET DEFAULTsetează 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 CASCADEopț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 CASCADEactiune:Î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