Home > Fragmenty szkoleń > Klucz obcy w PostgreSQL

Klucz obcy w PostgreSQL

PostgreSQL

Klucz obcy w PostgreSQL to grupa lub pole w tabeli, które jest używane do jednoznacznej identyfikacji wierszy z innej tabeli. Mówiąc ogólnie, klucz obcy w PostgreSQL jest definiowany jako pierwsza tabela odwołująca się do klucza podstawowego drugiej tabeli. Nazwa tabeli wskazuje, że tabela podrzędna zawiera klucz obcy, a inna tabela z odwołaniem do klucza obcego jest nazywana tabelą nadrzędną.

Składnia:

  • Klucz podstawowy (Primary Key): Tworzymy klucz podstawowy w pierwszej kolumnie tabeli i podajemy odniesienie do tego klucza podstawowego w drugiej kolumnie tabeli, aby zaimplementować klucz obcy (Foreign Key) w PostgreSQL.
  • Typ danych: Musimy zdefiniować typ danych kolumny. Jeśli wiersz kolumny, którą zamierzamy użyć jako Primary Key zawiera wartość liczbową, to dla kolumny , która będzie stanowić do niej referencję w innej tabeli również definiujemy danych typu integer.
  • References: Odwołanie definiuje się jako tworzenie klucza podstawowego w pierwszej tabeli i odwoływanie się do tego klucza podstawowego w drugiej tabeli w celu jego implementacji, gdzie nazywany jest już kluczem obcym.

Jak działa klucz obcy w PostgreSQL

  • Możemy powiedzieć, że klucz obcy jest rodzajem pewnego ograniczenia. Klucz obcy stwierdza, że ​​wartość w kolumnie musi odpowiadać wartościom w innym wierszu, w innej tabeli.
  • Klucz obcy w PostgreSQL zachowuje koncepcję integralności referencyjnej z dwiema powiązanymi tabelami.
  • Ograniczenia klucza obcego w PostgreSQL powodują, że wartości w pierwszej kolumnie muszą pojawiać się lub występować razem z wartościami w drugiej kolumnie. Jeśli nie ma wartości w pierwszej tabeli, dostaniemy komunikat o błędzie (“ERROR: insert or update on table “table_name” violates foreign key constraint “table2 column_name fkey”) w momencie wstawiania nowego rekordu do drugiej tabeli..

Przykład 1. Utworzymy 2 tabele, klucz podstawowy i klucz obcy.

Tworzymy pierwszą tabelę klient1 i ustwiamy w niej klucz podstawowy na kolumnie klient_id:

Tworzymy drugą tabelę klient2 a w niej referencję do klucza podstawowego tabeli klient1:

Teraz możemy podejrzeć wprowadzone zmiany w PSQL, stosując polecenie \d kolejno na tabeli klient1 oraz klient2:

Przykład 2.Dodawanie nowych rekordów.

Zbadamy co stanie jeżeli będziemy chcieli wstawić tą samą wartość id w tabeli klient1 oraz klient2:

W przypadku wstawiania danych do pierwszej tabeli na wyjściu pełen sukces 🙂

Następnie wstawiamy dane do tabeli klient2:

Na wyściu otrzymujemy również:

Ale przy próbie dodania kolejnego rekordu w drugiej tabeli klient2:

Otrzymujemy błąd:

Podsumowując:

Ograniczenia klucza obcego określają, że wartości z pierwszej kolumny tabeli muszą występować razem z wartościami z drugiej kolumny tabeli. Jeśli wartości nie ma w pierwszej tabeli, w momencie wstawiania nowego rekordu do drugiej tabeli pojawi się komunikat o błędzie.Zapraszamy na szkolenia z zakresu PostgreSQLDokumentacja PostgreSQL.

Może Cię również zainteresować: