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 kluczowymCONSTRAINT. Klauzula CONSTRAINT jest opcjonalna. Jeśli go pominiesz, PostgreSQL przypisze automatycznie wygenerowaną nazwę.
  • Po Drugie, określ jedną lub więcej kolumn klucza obcego w nawiasach poFOREIGN 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 CASCADEakcja:

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