Składnia
[Nazwa ograniczenia] Klucz obcy (kolumny)Tabela odniesienia to tabela nadrzędna. A kolumna dla klucza obcego jest kluczem podstawowym rodzica.
Klucz zagraniczny wprowadzający w oświadczeniu Utwórz
Jeśli chodzi o ograniczenia kluczowe obce, potrzebujemy dwóch tabel, aby zilustrować tę koncepcję. Zacznijmy od zdefiniowania tabeli „projektanta”, a drugi to „kategoria”. Oba tabele są tworzone za pomocą instrukcji Utwórz.
>> Utwórz projektanta tabeli (designer_id int wygenerowany zawsze jako tożsamość, Designer_name varchar (50) nie null, klucz podstawowy (designer_id));W tabeli „Designer” projektant_id jest ustawiony jako klucz podstawowy. Teraz utwórz drugą tabelę.
>> Utwórz kategorię tabeli (kategoria_id Int zawsze wygenerowana jako tożsamość, projektant_id int, kategoria_id Int, kategoria_nazwa varchar (200) nie null, klucz podstawowy (kategoria_idłowa), ograniczenie FK_DESIGNER KLUCZ (Designer_id) Projektant (designer_id));W tej tabeli kategoria_id jest ustawiona jako klucz podstawowy. Ponieważ oba te tabele mają przyłączyć się do ograniczenia klucza obcego. W tej tabeli tworzymy „projektant_id”. Tabela odniesienia jest wymieniona w tabeli, aby zapytanie można było łatwo wykonać, przeszukując tabelę.
Ograniczenie fk_designerTabela projektanta to tabela nadrzędna, podczas gdy tabela „kategorii” to tabela dziecięca. Każdy projektant pracuje na zero lub większej liczbie kategorii sukienki, a jeden lub więcej projektantów rozważa każdą kategorię sukienki.
NOTATKA: Aby stworzyć obcy klucz ID jednej tabeli w drugiej tabeli, ważne jest, aby ten konkretny identyfikator jako klucz podstawowy w tabeli. W przeciwnym razie nie utworzy obcego klucza w drugiej tabeli. Błąd wystąpił podczas tworzenia klucza obcego.
BEZ AKCJI
Po utworzeniu tabel używamy do wprowadzania w nim wartości przez polecenie „Wstaw”.
>> Wstaw do Designer (Designer_name) Wartości („Ahmad Shah”), („Sajjad Hassan”);Podobnie w przypadku drugiej tabeli, wprowadź wartości.
>> Wstaw do kategorii (Designer_id, Category_name) Wartości (1, „Frock”), (1, „Frock”), (2, „Suit”), (2, „Suit-1”);W tabeli „kategorii” wartości zostaną wstawione w dwóch kolumnach, w tym nazwa kategorii i designer_id. Dodaliśmy ten sam numer dla identyfikatora i tej samej nazwy dla nazwy kategorii, aby spełnić warunek. Teraz zastosuj polecenie Usuń, aby udowodnić typ „bez akcji” klucza obcego. W tym poleceniu podaliśmy numer identyfikacyjny, aby usunąć określony wiersz z tabeli.
>> Usuń z projektanta, gdzie projektant_id = 1;To zapytanie nie zostanie pomyślnie wykonane. Wyświetli komunikat o błędzie, jak wyświetli się w Snap, jak wspomniano powyżej. Ten błąd wynika z „braku działań”. PostgreSQL pokazuje naruszenie ograniczenia, ponieważ projektant_id = 1 dotyczy dwóch rzędów obecnych w tabeli.
Ustaw null jako opcję w klauzuli usuwania
Utwórz tabelę o nazwie „Pracownik”, który ma EMP_ID jako klucz podstawowy.
>> Utwórz tabelę pracownika (emo_id generowany zawsze jako tożsamość, emp_name varchar (50) nie null, klucz podstawowy (emp_id));Po wykonaniu zapytania wyświetlany jest komunikat, który pokazuje, że nasze zapytanie jest pomyślnie wykonywane. Po utworzeniu tabeli pracowników utwórz swoją tabelę dziecięcą „informacje” za pomocą „emp_id” jako klucza obcego.
>> Utwórz informacje o tabeli (info_id int wygenerowane zawsze jako tożsamość, info_id int, emp_id int, info_name varchar (200) nie null, klucz podstawowy (info_id), ograniczenie fk_employee obcokrajowy klucz (emp_id) ;Wykonaj zapytanie, a zobaczysz, że tabela jest tworzona. Podobnie jak instrukcja tabeli „Utwórz” używaną wcześniej, jest to samo. Tutaj dodaliśmy nieruchomość.
"Na usunięciu zestawu null". To działanie jest stosowane w klauzuli ON UDELET. Teraz musimy wypełnić tabele wartościami.
>> Wstaw do pracownika (emp_name) wartości („Sophia Smith”), („Rubi Williams”), („Victoria Gomex”); >> Wstaw do informacji (emp_id, info_name) wartości (1, „urzędnik”), (1, „menedżer”), (2, „menedżer”), (3, „urzędnik”);Polecenie Delete składa się z klauzuli „gdzie” w celu zidentyfikowania identyfikatora do usunięcia z rzędu w tabeli pracownika.
>> Usuń z pracownika, gdzie emp_id = 2;Odpowiednie dane zostaną usunięte podczas wykonywania zapytania. Po tym zapytaniu zobaczymy wynikowy stół.
>> Wybierz * z informacji;Rzędy posiadające konkretne odniesienie w tabeli dziecięcej „Informacje” są ustawione na null, ponieważ użyliśmy akcji UDELET SETE SET w poleceniu przy tworzeniu tabeli.
Za pomocą polecenia Tabela Alter Table
W poprzednich przykładach widzieliśmy, jak zastosować ograniczenia w momencie tworzenia tabel. Co jeśli utworzyłeś tabele z ograniczeniami FK (klucz obcego), a później chcesz dodać ograniczenia? Oto rozwiązanie tego pytania. Najpierw utworzymy dwie tabele. Ale w momencie tworzenia tabeli nie ma potrzeby identyfikowania obcego klucza w drugiej tabeli, aby uczynić go jako dziecko.
>> Utwórz pielęgniarkę tabeli (pielęgniarka INT not null, pielęgniarka varchar (55) nie null, pielęgniarka varchar (55) nie null, klucz podstawowy (pielęgniarka)); >> Utwórz Table Clinic_id Int, Nurse_id Int, Clinic_Details Varchar (50) Not Null, Clinic_Type Varchar (50) nie null);Ta tabela nie zawiera ograniczeń i odniesień do obcego itp. Po wstawieniu zaktualizujemy teraz tabelę, zezwalając na jej ograniczenia.
>> alter Table Clinic Dodaj ograniczenie FK_NURSE KEY ZAGRANY (Clinic_ID) Odniesienia do pielęgniarki (pielęgniarka) na usunięciu kaskady w sprawie aktualizacji ograniczającej;Tabela będzie miała teraz obce klucz po zmianie.
Usuń ograniczenia z tabeli
W tym celu używamy polecenia alter. To polecenie usunie tylko ograniczenia z tabeli.
Jest to konieczne do usunięcia całej tabeli. Ale niemożliwe jest usunięcie lub upuszczenie takiego tabeli, która ma połączenie z drugą tabelą w formie obcego klucza. Najpierw usuwamy fk_constraint pierwszego utworzonego tabeli z drugiej. Rozważ tabelę „Projektant” i „Kategoria”.
>> Zmień ograniczenie kategorii tabeli FK_DESIGNER;Po zobaczeniu, że zapytanie jest wykonywane. Teraz zastosuj polecenie upuść.
>> stół zrzutu, jeśli istnieje projektant;Schemat reprezentuje obce klucze w tabelach. Z reprezentacji ERD zrobiliśmy snap, aby wyjaśnić dwuznaczność dotyczącą ograniczeń z obrazu; Możesz zobaczyć połączenia w tabelach, które stworzyliśmy w tym artykule.
Wniosek
„Klucz zagraniczny PostgreSQL” pokazuje relację łączącą dwie tabele. Pobieranie zapisu jednej tabeli poprzez powodowanie zmiany innej można wykonać tylko przez to ograniczenie. Relacja rodzic-dziecko jest wbudowana dzielenie się klawiszami. Ten klucz można wprowadzić przy tworzeniu lub aktualizacji tabeli. Obie metody są wyjaśnione w tym przewodniku. Przykłady te opisują znaczenie kluczy we wszystkich tabelach używanych w dowolnej bazie danych.