Podsumowanie: w tym samouczku dowiesz się o kluczu obcym PostgreSQL i jak dodawać klucze obce do tabel przy użyciu ograniczeń klucza obcego.
Wprowadzenie do ograniczenia klucza obcego PostgreSQL
klucz obcy jest kolumną lub grupą kolumn w tabeli, które odwołują się do klucza głównego innej tabeli.
tabela zawierająca klucz obcy nazywa się tabelą odniesienia lub tabelą potomną. Tabela, do której odwołuje się klucz obcy, nazywana jest tabelą odniesienia lub tabelą nadrzędną.,
tabela może mieć wiele kluczy obcych w zależności od relacji z innymi tabelami.
w PostgreSQL definiujesz klucz obcy używając ograniczenia klucza obcego. Ograniczenie klucza obcego pomaga zachować integralność danych między tabelami potomnymi i rodzicowymi.
ograniczenie klucza obcego wskazuje, że wartości w kolumnie lub grupie kolumn w tabeli podrzędnej są równe wartościom w kolumnie lub grupie kolumn tabeli nadrzędnej.,
składnia ograniczeń klucza obcego PostgreSQL
poniżej przedstawiono składnię ograniczeń klucza obcego:
w tej składni:
- najpierw należy podać nazwę ograniczenia klucza obcego po słowie kluczowym
CONSTRAINT
. KlauzulaCONSTRAINT
jest opcjonalna. Jeśli go pominiesz, PostgreSQL przypisze automatycznie wygenerowaną nazwę. - Po Drugie, określ jedną lub więcej kolumn klucza obcego w nawiasach po
FOREIGN KEY
słowa kluczowe., - Po Trzecie, określ tabelę nadrzędną i kolumny klucza nadrzędnego, do których odnoszą się kolumny klucza obcego w klauzuli
.
- na koniec określ akcje usuwania i aktualizacji w
ON DELETE
ION UPDATE
.
akcje delete I update określają zachowania, gdy klucz główny w tabeli nadrzędnej jest usuwany i aktualizowany. Ponieważ klucz podstawowy jest rzadko aktualizowany, ON UPDATE action
nie jest często używany w praktyce. Skupimy się na akcji ON DELETE
.,
PostgreSQL obsługuje następujące akcje:
- SET null
- SET DEFAULT
- RESTRICT
- NO ACTION
- CASCADE
PostgreSQL foreign key constraint examples
poniższe polecenia tworzą customers
I contacts
tables:
w tym przykładzie tabela customers
jest tabelą nadrzędną, a tabela contacts
jest tabelą podrzędną.
każdy klient ma zero lub wiele kontaktów, a każdy kontakt należy do zero lub jednego klienta.,
kolumnacustomer_id
w tabelicontacts
jest kolumną klucza obcego, która odwołuje się do kolumny klucza głównego o tej samej nazwie w tabelicustomers
.
następujące ograniczenie klucza obcego fk_customer
w tabeli contacts
definiuje customer_id
jako klucz obcy:
ponieważ ograniczenie klucza obcego nie ma ON DELETE
I ON UPDATE
akcja, domyślnie NO ACTION
.,
brak działania
następujące wstawia dane do tabel customers
I contacts
:
poniższe polecenie usuwa identyfikator klienta 1 z tabeli customers
:
Code language: SQL (Structured Query Language) (sql)
z powodu ON DELETE NO ACTION
, PostgreSQL narusza ograniczenia, ponieważ wiersze odwołujące się do identyfikatora klienta 1 nadal istnieją w tabeli contacts
:
RESTRICT
akcja jest podobna do NO ACTION
., Różnica pojawia się tylko wtedy, gdy zdefiniujesz ograniczenie klucza obcego jako DEFERRABLE
w trybie INITIALLY DEFERRED
lub INITIALLY IMMEDIATE
. Omówimy więcej na ten temat w kolejnym samouczku.
ustaw wartość NULL
SET NULL
automatycznie ustawiaNULL
na kolumny klucza obcego w wierszach odniesienia tabeli potomnej, gdy wiersze odniesienia w tabeli nadrzędnej zostaną usunięte.,
poniższe polecenia upuszczają przykładowe tabele i tworzą je ponownie za pomocą klucza obcego, który używa akcji SET NULL
w ON DELETE
klauzula:
następujące polecenia wstawiają dane do customers
I contacts
tabele:
aby zobaczyć, jak działa SET NULL
, usuńmy Klienta o ID 1 z customers
tabela:
Code language: SQL (Structured Query Language) (sql)
z powodu ON DELETE SET NULL
div>Action, wiersze odniesienia w tabeli contacts
ustawione na null., Poniższe polecenie wyświetla dane w tabeli contacts
:
jak widać wyraźnie z wyjścia, wiersze, które mają customer_id
1 mają teraz customer_id
ustawia na NULL
kaskada
ON DELETE CASCADE
automatycznie usuwa wszystkie wiersze odniesienia w tabeli podrzędnej, gdy wiersze odniesienia w tabeli nadrzędnej są usuwane., W praktyce najczęściej używaną opcją jest ON DELETE CASCADE
.
poniższe polecenia odtwarzają przykładowe tabele.,iv> zmiany w CASCADE
:
następująca instrukcja usuwa identyfikator klienta 1:
ze względu na działanie ON DELETE CASCADE
wszystkie wiersze odniesienia w contacts
tabela jest automatycznie usuwana:
Ustaw domyślną
ON DELETE SET DEFAULT
ustawia wartość domyślną na kolumnę klucza obcego wierszy odniesienia w tabeli podrzędnej, gdy wiersze odniesienia z tabeli nadrzędnej są usuwane.,nt do istniejącej tabeli
aby dodać ograniczenie klucza obcego do istniejącej tabeli, należy użyć następującej formy instrukcji ALTER TABLE:
Po dodaniu ograniczenia klucza obcego z opcją ON DELETE CASCADE
do istniejącej tabeli, należy wykonać następujące kroki:
najpierw upuść istniejące ograniczenia klucza obcego:
Code language: SQL (Structured Query Language) (sql)
Po pierwsze, dodaj nowe ograniczenie klucza obcego za pomocą ON DELETE CASCADE
akcja:
w tym samouczku nauczyłeś się o kluczach obcych PostgreSQL i jak używać ograniczenia klucza obcego do tworzenia kluczy obcych dla tabeli.,
- czy ten tutorial był pomocny ?
- YesNo
Dodaj komentarz