Fremdschlüssel PostgreSQL

Fremdschlüssel PostgreSQL
Ein Fremdschlüssel ist eine oder mehrere Spalten mit Werten, die vom Primärschlüssel abhängen. Diese Einschränkung wird zum Verbinden von zwei Tischen verwendet. In PostgreSQL hilft ein Fremdschlüssel dabei. Der Fremdschlüssel kann mithilfe von: erstellt werden:
  • Tischabfrage erstellen
  • Abfrage aktualisieren/ändern

Syntax

[Einschränkungsname] Fremdschlüssel (Spalten)
Referenzen parent_table (Spalten)
[Bei Löschen der Aktion]
[Über Update -Aktion]

Die Referenztabelle ist die übergeordnete Tabelle. Und die Spalte für den Fremdschlüssel ist der Hauptschlüssel des Elternteils.

Fremdschlüssel Einführung in die Erstellung Erklärung

In Bezug auf fremde Schlüsselbeschränkungen benötigen wir zwei Tabellen, um das Konzept zu veranschaulichen. Beginnen wir mit der Definition einer Tabelle "Designer", und die zweite ist "Kategorie". Beide Tabellen werden mithilfe einer Erstellungserklärung erstellt.

>> Tabelle Designer erstellen (Designer_id int immer als Identität, Designer_Name varchar (50) Null, Primärschlüssel (Designer_ID));

In der Tabelle „Designer“ wird Designer_id als Primärschlüssel festgelegt. Erstellen Sie nun die zweite Tabelle.

>> Tabellenkategorie erstellen (category_id int immer als identität, designer_id int, category_id int, category_name varchar (200) NICHT NULL, Primärschlüssel (Category_ID), Einschränkung fk_designer fremder Key (Designer_ID) Referenzen Designer (Designer_ID)));

In dieser Tabelle wird category_id als Primärschlüssel festgelegt. Da diese beiden Tabellen die fremden Schlüsselbeschränkungen verbinden sollen. Wir machen den "Designer_ID" zum Fremdschlüssel in dieser Tabelle. Die Referenztabelle wird in der Tabelle so erwähnt, dass die Abfrage leicht ausgeführt werden kann, indem die Tabelle gesucht wird.

Einschränkung fk_designer
Fremdschlüssel (Designer_id)
Referenzen Designer (Designer_id));

Die Designertabelle ist die übergeordnete Tabelle, während die Tabelle „Kategorie“ die untergeordnete Tabelle ist. Jeder Designer arbeitet an Null oder mehr Kleiderkategorien, und eine oder mehrere Designer betrachten jede Kleiderkategorie.

NOTIZ: Um einen Fremdschlüssel der ID einer Tabelle in der zweiten Tabelle zu erstellen, ist es wichtig, diese spezifische ID als Hauptschlüssel in seiner Tabelle zu machen. Andernfalls bildet es in der anderen Tabelle keinen Fremdschlüssel. Ein Fehler tritt beim Erstellen des Fremdschlüssels auf.

KEINE AKTION

Nach der Erstellung von Tabellen geben wir die Werte mit dem Befehl „Einfügen“ ein.

>> In Designer (Designer_Name) Werte einfügen ('Ahmad Shah'), ('Sajjad Hassan');

In ähnlicher Weise geben Sie im Fall der zweiten Tabelle die Werte ein.

>> Ins Category (Designer_ID, Category_Name) Werte (1, 'Frock'), (1, 'Frock'), (2, 'Anzug'), (2, 'Anzug-1');

In der Tabelle „Kategorie“ werden die Werte in zwei Spalten eingefügt, einschließlich category_name und Designer_id. Wir haben dieselbe Nummer für die ID und denselben Namen für den Category_Name hier hinzugefügt, um die Bedingung zu erfüllen. Wenden Sie nun den Befehl Löschen an, um den Typ "No -Action" des Fremdschlüssels zu beweisen. In diesem Befehl haben wir eine ID -Nummer zur Verfügung gestellt, um die spezifische Zeile aus der Tabelle zu löschen.

>> vom Designer löschen wobei Designer_id = 1;

Diese Abfrage wird nicht erfolgreich ausgeführt. Es wird eine Fehlermeldung angezeigt, wie im oben erwähnten Snap angezeigt wird. Dieser Fehler liegt auf "Keine Aktion löschen". PostgreSQL zeigt die Einschränkungsverletzung, da der Designer_id = 1 für zwei Zeilen in der Tabelle vorhanden ist.

Stellen Sie NULL als Option in Löschklausel ein

Erstellen Sie eine Tabelle mit dem Namen "Mitarbeiter" mit EMP_ID als Hauptschlüssel.

>> TABLE -Mitarbeiter erstellen (emo_id immer als identität, emp_name varchar (50) nicht null, primärer Schlüssel (emp_id));

Wenn wir die Abfrage ausführen, wird eine Nachricht angezeigt, die zeigt, dass unsere Abfrage erfolgreich ausgeführt wird. Erstellen Sie nach dem Erstellen der Mitarbeitertabelle seine untergeordnete Tabelle „Info“, indem Sie „EMP_ID“ als Fremdschlüssel verwenden.

>> Tabelle info erstellen (info_id int immer generiert als Identität, info_id int, emp_id int, info_name varchar (200) NICHT NULL, Primärschlüssel (info_id), Einschränkung fk_aMlyee Fremd Key (EMP_ID) Referenzen Mitarbeiter (EMP_ID) auf Löschen von Set Null) ;

Führen Sie die Abfrage aus, und Sie werden sehen, dass die Tabelle erstellt wird. Wie die zuvor verwendete Tabellenanweisung "Erstellen". Hier haben wir Eigentum hinzugefügt.

Beim Löschen set null”. Diese Aktion wird in der Löschklausel angewendet. Jetzt müssen wir die Tabellen mit den Werten füllen.

>> in die Mitarbeiter einfügen (emp_name) Werte ('Sophia Smith'), ('Rubi Williams'), ('Victoria Gomex'); >> Info (emp_id, info_name) Werte (1, 'Clerk'), (1, 'Manager'), (2, 'Manager'), (3, 'Clerk');

Der Befehl löschen besteht aus der Klausel "WO", um die ID zu identifizieren, die aus der Zeile im Tabellenmitarbeiter gelöscht werden soll.

>> vom Mitarbeiter löschen, wobei emp_id = 2;

Die relevanten Daten werden zur Ausführung der Abfrage gelöscht. Wir werden die resultierende Tabelle nach dieser Abfrage sehen.

>> aus der Info auswählen;

Die Zeilen mit der spezifischen Referenz in der untergeordneten Tabelle 'Info' werden auf null gesetzt, da wir die Aktion für Lösch -Set Null im Befehl am Tischerstellung verwendet haben.

Verwenden Sie einen Befehl zur Änderungstabelle

In den vorherigen Beispielen haben wir gesehen, wie die Einschränkungen zum Zeitpunkt der Erstellung der Tabellen angewendet werden können. Was ist, wenn Sie die Tabellen mit FK -Einschränkungen (Fremdschlüssel) erstellt haben und später Einschränkungen hinzufügen möchten? Hier ist eine Lösung für diese Frage. Erstens werden wir zwei Tische erstellen. Zum Zeitpunkt der Erstellung der Tabelle müssen jedoch nicht den Fremdschlüssel in der zweiten Tabelle identifiziert werden, um sie als Kind zu erstellen.

>> Erstellen Sie die Tabelle Krankenschwester (Krankenschwester_ID Int No Null, Krankenschwester_Name varchar (55) NICHT NULL, Krankenschwester_Location Varchar (55) NICHT NULL, Primärschlüssel (Krankenschwester_ID)); >> TABLE CLINIC CLINIC_ID INT, Schwester_id int, Clinic_details varchar (50) NICHT NULL, CLINIC_TYPE VARCHAR (50) NICHT NULL);

Diese Tabelle enthält nicht die fremden Schlüsselbeschränkungen und Referenzen usw. Nach dem Einsetzen werden wir nun die Tabelle aktualisieren, indem wir die Einschränkungen zulassen.

>> TABLE -Klinik addieren Sie die Einschränkung FK_Nurse Fremd Key (Clinic_ID) Referenzen Krankenschwester (Krankenschwester_id) auf Löschen der Kaskade auf dem Update -Einschränkung;

Die Tabelle hat jetzt den fremden Schlüssel nach der Änderung.

Entfernen Sie die Einschränkungen aus der Tabelle

Zu diesem Zweck verwenden wir den Befehl ändern. In diesem Befehl wird nur die Einschränkungen aus der Tabelle entfernt.

Dies ist erforderlich, um die gesamte Tabelle zu löschen. Es ist jedoch unmöglich, einen solchen Tisch zu löschen oder fallen zu lassen, der mit der anderen Tabelle in Form eines Fremdschlüssels verbindet. Erstens entfernen wir die fk_constraint der zuerst erstellten Tabelle aus der zweiten. Betrachten Sie die Tabelle "Designer" und Kindertabelle "Kategorie".

>> TABLE -Kategorie Drop -Einschränkung fk_designer;

Nachdem die Abfrage ausgeführt wird. Wenden Sie nun den Drop -Befehl an.

>> Droptabelle, wenn der Designer existiert;

Das Diagramm repräsentiert die Fremdschlüssel in den Tabellen. Aus der ERD -Darstellung haben wir einen Schnappschuss gemacht, um die Mehrdeutigkeit in Bezug auf die Einschränkungen des Bildes zu klären. Sie können die Verknüpfungen in den in diesem Artikel erstellten Tabellen sehen.

Abschluss

"Fremd Key PostgreSQL" zeigt die Verbindungsbeziehung zwischen zwei Tabellen. Wenn Sie die Aufzeichnung einer Tabelle abrufen, indem Sie eine Änderung in einer anderen verursachen, kann dies nur durch diese Einschränkung durchgeführt werden. Die Eltern-Kind-Beziehung hat integriert, um die Schlüssel zu teilen. Dieser Schlüssel kann beim Erstellen oder Aktualisieren der Tabelle eingeführt werden. Beide Methoden werden in diesem Leitfaden erklärt. Diese Beispiele beschreiben die Bedeutung von Schlüssel in allen in jeder Datenbank verwendeten Tabellen.