összefoglaló: ebben a bemutatóban megismerheti a PostgreSQL idegen kulcsot, valamint azt, hogyan adhat hozzá idegen kulcsokat a táblákhoz idegen kulcskorlátozások segítségével.

Bevezetés A PostgreSQL idegen Kulcskorlátozásba

az idegen kulcs egy oszlop vagy oszlopcsoport egy táblázatban, amely egy másik táblázat elsődleges kulcsára utal.

az idegen kulcsot tartalmazó táblázatot hivatkozási táblázatnak vagy gyermektáblának nevezzük. Az idegen kulcs által hivatkozott táblázatot pedig hivatkozási táblázatnak vagy szülőtáblának nevezzük.,

a táblázat több idegen kulcsot is tartalmazhat, attól függően, hogy milyen kapcsolatban áll más táblákkal.

A PostgreSQL-ben egy idegen kulcsot definiál az idegen kulcs megszorításával. A külföldi kulcskorlátozás segít megőrizni az adatok referenciális integritását a gyermek és a szülő táblák között.

egy idegen kulcskorlátozás azt jelzi, hogy a gyermektáblázat oszlopában vagy oszlopcsoportjában lévő értékek megegyeznek a szülő tábla oszlopában vagy oszlopcsoportjában szereplő értékekkel.,

PostgreSQL foreign key constraint syntax

az alábbi ábra egy idegen key constraint syntax:

ebben a szintaxisban:

  • először adja meg az idegen kulcs constraint nevét a CONSTRAINT kulcsszó után. A CONSTRAINT záradék nem kötelező. Ha kihagyja, a PostgreSQL automatikusan generált nevet fog hozzárendelni.
  • második, zárójelben adjon meg egy vagy több idegen kulcs oszlopot a FOREIGN KEY kulcsszavak után.,
  • harmadik, adja meg a záradékban az idegen kulcs oszlopok által hivatkozott alaptáblát és szülő kulcsoszlopokat.
  • végül adja meg a ON DELETE és ON UPDATE műveletek törlését és frissítését.

a törlési és frissítési műveletek határozzák meg a viselkedést, amikor a szülőtáblázat elsődleges kulcsát törlik és frissítik. Mivel az elsődleges kulcsot ritkán frissítik, aON UPDATE action nem gyakran használják a gyakorlatban. A ON DELETE műveletre összpontosítunk.,

PostgreSQL támogatja az alábbi intézkedések:

  • SET NULL
  • ALAPÉRTELMEZETT
  • KORLÁTOZZA
  • NINCS AKCIÓ
  • CASCADE

PostgreSQL idegen kulcs megszorítást példák

Az alábbi állítások létre a customers vagy contacts táblázatok:

ebben A példában a customers táblázat a szülő táblázat a contacts táblázat a gyermek táblázat.

minden ügyfélnek nulla vagy sok kapcsolata van, minden kapcsolat nulla vagy egy ügyfélhez tartozik.,

a customer_idoszlop acontactstáblázat az idegen kulcs oszlop, amely hivatkozik az elsődleges kulcs oszlop az azonos nevű acustomers táblázat.

a következő idegen kulcskorlátozás fk_customer a contacts táblázat határozza meg a customer_id idegen kulcsként:

mivel az idegen kulcskorlátnak nincs ON DELETE and ON UPDATE action, they default to NO ACTION.,

NEM AKCIÓ

A következő lapkák adatokat a customers vagy contacts táblázatok:

A következő nyilatkozatot törli az ügyfél-azonosító 1 a customers táblázat:

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

Mert ON DELETE NO ACTION, PostgreSQL kérdések kényszer megsértése, mivel a hivatkozás sor, az ügyfél-azonosító 1 még mindig létezik a contacts táblázat:

A RESTRICT művelet hasonlít a NO ACTION., A különbség csak akkor merül fel, ha az idegen kulcskorlátot DEFERRABLE INITIALLY DEFERRED vagy INITIALLY IMMEDIATE móddal határozza meg. Erről többet fogunk megvitatni a következő bemutatóban.

SET NULL

The SET NULLautomatikusan beállítja a NULL értéket a gyermek táblázat hivatkozási soraiban lévő idegen kulcs oszlopokra, amikor a szülő táblázatban szereplő hivatkozási sorokat törlik.,

Az alábbi állítások csepp a minta táblázatok, majd újra létre őket a külföldi gombot, hogy használja a SET NULL akció a ON DELETE záradék:

Az alábbi állítások helyezze be adatokat a customers vagy contacts táblázatok:

látni, Hogy a SET NULL működik, töröljünk az ügyfél azonosítója 1 a customers táblázat:

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

Mert ON DELETE SET NULL akció a hivatkozás sort a contacts táblázat set NULL., A következő nyilatkozatot jeleníti meg az adatokat a contacts táblázat:

Mint látható, a kimenet, a sorok, hogy a customer_id 1 most a customer_id beállítja, hogy a NULL

CASCADE

A ON DELETE CASCADE automatikusan törli az összes hivatkozó sor a gyermek táblázat, amikor a hivatkozott sor a szülő táblázat törlődik., A gyakorlatban a A leggyakrabban használt opció.

a következő állítások újra létrehozzák a mintatáblákat.,iv.> változás CASCADE:

A következő nyilatkozatot törli az ügyfél-azonosító 1:

Mert ON DELETE CASCADE akció, az összes hivatkozó sort a contacts táblázat automatikusan törlődnek:

ALAPÉRTELMEZETT

A ON DELETE SET DEFAULT beállítja az alapértelmezett érték a külföldi kulcs oszlop a hivatkozás sor a gyermek táblázat, amikor a hivatkozott sor a szülő táblázat törlődik.,nt, hogy egy meglévő táblázat

ahhoz, Hogy hozzá egy idegen kulcs megszorítást, hogy a meglévő táblázat, használd az alábbi űrlapot az ALTER TABLE utasítás:

Ha hozzá egy idegen kulcs megszorítást a ON DELETE CASCADE lehetőséget, hogy egy már létező asztalhoz, meg kell, hogy kövesse ezeket a lépéseket:

Első, csepp meglévő idegen kulcs korlátok:

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

Első, adjunk hozzá egy új idegen kulcs megszorítást a ON DELETE CASCADE akció:

ez A bemutató, tanultál a PostgreSQL idegen kulcs, hogyan kell használni az idegen kulcs megszorítást, hogy hozzon létre idegen kulcsok az asztalon.,

  • hasznos volt ez a bemutató ?
  • YesNo