ö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. ACONSTRAINT
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
ésON 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_id
oszlop acontacts
tá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 NULL
automatikusan 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
Vélemény, hozzászólás?