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. Clauza CONSTRAINT 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 și ON 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 pe ON 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 și contacts mese:

    În acest exemplu, customers tabel este tabelul părinte și contacts tabel este tabelul copil.

    fiecare client are zero sau mai multe contacte și fiecare contact aparține zero sau un client.,

    customer_id coloană în contacts masa este cheie externă coloană care face referire la cheia primară a unei coloane cu același nume în customers masă.

    următoarele foreign key constraint fk_customer în contacts tabel definește customer_id ca cheie externă:

    Pentru restricție de cheie externă nu au ON DELETE și ON UPDATE acțiune, au implicit NO ACTION.,

    NICI o ACTIUNE

    următoarele introduce date în customers și contacts tabele

    urmă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ă în contacts tabel:

    RESTRICT acțiune este similar cu NO ACTION., Diferența apare doar atunci când definiți restricție de cheie externă ca DEFERRABLE cu un INITIALLY DEFERRED sau INITIALLY IMMEDIATE modul. Vom discuta mai multe despre acest lucru în tutorialul ulterior.

    SET NULL

    SET NULL setează automat NULL 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 în ON DELETE clauză:

    următoarele afirmații introduce date în customers și contacts tabele:

    Pentru a vedea cum SET NULL funcționează, să ștergeți clientul cu id-ul 1 din customers tabel:

    Code language: SQL (Structured Query Language) (sql)

    Pentru ON DELETE SET NULL acțiune, corelarea rânduri în contacts masa setat la NULL., Următoarea declarație afișează datele în contacts tabel:

    Cum poate fi văzut în mod clar de ieșire, rândurile care au customer_id 1 au acum customer_id seturi pentru NULL

    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țiunea ON DELETE CASCADE este cea mai frecvent utilizată.următoarele afirmații recreează tabelele de probă.,iv> modificări CASCADE:

    următoarea declarație șterge id-ul de client 1:

    Pentru ON DELETE CASCADE acțiune, toate corelarea rânduri în contacts 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 existent

    Pentru 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