Zusammenfassung: In diesem Tutorial erfahren Sie mehr über PostgreSQL-Fremdschlüssel und wie Sie Tabellen mithilfe von Fremdschlüsseleinschränkungen Fremdschlüssel hinzufügen.
Einführung in PostgreSQL Foreign Key-Einschränkung
ein Fremdschlüssel ist Eine Spalte oder eine Gruppe von Spalten in einer Tabelle, die auf den Primärschlüssel einer anderen Tabelle.
Die Tabelle, die den Fremdschlüssel enthält, wird Referenzierungstabelle oder untergeordnete Tabelle genannt. Und die Tabelle, auf die der Fremdschlüssel verweist, wird als referenzierte Tabelle oder übergeordnete Tabelle bezeichnet.,
Eine Tabelle kann abhängig von ihren Beziehungen zu anderen Tabellen mehrere Fremdschlüssel haben.
In PostgreSQL definieren Sie einen Fremdschlüssel mithilfe der Fremdschlüsseleinschränkung. Die Fremdschlüsseleinschränkung trägt dazu bei, die referenzielle Integrität der Daten zwischen den untergeordneten und übergeordneten Tabellen aufrechtzuerhalten.
Eine Fremdschlüsseleinschränkung gibt an, dass Werte in einer Spalte oder einer Gruppe von Spalten in der untergeordneten Tabelle den Werten in einer Spalte oder einer Gruppe von Spalten der übergeordneten Tabelle entsprechen.,
PostgreSQL foreign key constraint syntax
Das Folgende veranschaulicht eine foreign key constraint Syntax:
In dieser Syntax:
- Geben Sie zunächst den Namen für die foreign key constraint nach dem Schlüsselwort
CONSTRAINT
an.CONSTRAINT
– Klausel ist optional. Wenn Sie es weglassen, weist PostgreSQL einen automatisch generierten Namen zu. - Geben Sie eine oder mehrere Fremdschlüsselspalten in Klammern nach den Schlüsselwörtern
FOREIGN KEY
an., - Geben Sie drittens die übergeordnete Tabelle und die übergeordneten Schlüsselspalten an, auf die die Fremdschlüsselspalten in der Klausel
verweisen.
- Geben Sie abschließend die Lösch – und Aktualisierungsaktionen in den Klauseln
ON DELETE
undON UPDATE
an.
Die Delete-und Update-Aktionen bestimmen das Verhalten, wenn der Primärschlüssel in der übergeordneten Tabelle gelöscht und aktualisiert wird. Da der Primärschlüssel selten aktualisiert wird, wird die ON UPDATE action
in der Praxis nicht häufig verwendet. Wir konzentrieren uns auf dieON DELETE
Aktion.,
PostgreSQL unterstützt die folgenden Aktionen:
- SET NULL
- SET DEFAULT
- RESTRICT
- NO ACTION
- CASCADE
PostgreSQL foreign key constraint examples
Die folgenden Anweisungen erstellen die customers
und contacts
Tabellen:
In diesem Beispiel ist die Tabelle customers
die übergeordnete Tabelle und die Tabelle contacts
die untergeordnete Tabelle.
Jeder Kunde hat null oder viele Kontakte und jeder Kontakt gehört Null oder einem Kunden.,
Diecustomer_id
Spalte in dercontacts
Tabelle ist die Fremdschlüsselspalte, die auf die gleichnamige Primärschlüsselspalte in dercustomers
Tabelle verweist.
Die folgende Fremdschlüsseleinschränkung in der Tabelle contacts
definiert die customer_id
als Fremdschlüssel:
Da die Fremdschlüsseleinschränkung nicht die ON DELETE
und ON UPDATE
Aktion hat, sie standardmäßig NO ACTION
.,
KEINE AKTION
Folgendes fügt Daten in die customers
und contacts
Tabellen ein:
Die folgende Anweisung löscht die Kunden-ID 1 aus der customers
Tabelle:
Code language: SQL (Structured Query Language) (sql)
Aufgrund der ON DELETE NO ACTION
, PostgreSQL gibt eine Einschränkungsverletzung aus, da die referenzierenden Zeilen der Kunden-ID 1 in der contacts
– Tabelle noch vorhanden sind:
Die RESTRICT
– Aktion ähnelt der NO ACTION
., Der Unterschied entsteht nur, wenn Sie die Fremdschlüsseleinschränkung als DEFERRABLE
mit einer INITIALLY DEFERRED
oder INITIALLY IMMEDIATE
mode definieren. Wir werden mehr darüber im folgenden Tutorial diskutieren.
SET NULL
Die SET NULL
setzt automatisch NULL
auf die Fremdschlüsselspalten in den referenzierenden Zeilen der untergeordneten Tabelle, wenn die referenzierten Zeilen in der übergeordneten Tabelle gelöscht werden.,
Die folgenden Anweisungen löschen die Beispieltabellen und erstellen sie mit dem Fremdschlüssel neu, der die SET NULL
-Aktion in der ON DELETE
– Klausel verwendet:
Die folgenden Anweisungen fügen Daten in die customers
und contacts
– Tabellen ein:
Um zu sehen, id=“f471fcdba6″> funktioniert, löschen wir den Kunden mit der ID 1 aus dercustomers
– Tabelle:
Code language: SQL (Structured Query Language) (sql)
Aufgrund der ON DELETE SET NULL
– Aktion sind die referenzierenden Zeilen in dercontacts
– Tabelle auf NULL gesetzt., Die folgende Anweisung zeigt die Daten in der Tabelle contacts
an:
Wie aus der Ausgabe hervorgeht, sind die Zeilen mit der customer_id
1 hat nun die customer_id
setzt auf NULL
Die ON DELETE CASCADE
löscht automatisch alle referenzierenden Zeilen in der untergeordneten Tabelle, wenn die referenzierten Zeilen in der übergeordneten Tabelle gelöscht werden., In der Praxis ist die ON DELETE CASCADE
die am häufigsten verwendete Option.
Die folgenden Anweisungen erstellen die Beispieltabellen neu.,iv> Änderungen an CASCADE
:
Die folgende Anweisung löscht die Kunden-ID 1:
Aufgrund der Aktion ON DELETE CASCADE
werden alle referenzierenden Zeilen in der Tabelle contacts
automatisch gelöscht:
SET DEFAULT
Die ON DELETE SET DEFAULT
setzt den Standardwert auf die Fremdschlüsselspalte der referenzierenden Zeilen in der untergeordneten Tabelle, wenn die referenzierten Zeilen aus der übergeordneten Tabelle gelöscht werden.,nt zu einer vorhandenen Tabelle
Um der vorhandenen Tabelle eine Fremdschlüsseleinschränkung hinzuzufügen, verwenden Sie die folgende Form der Anweisung ALTER TABLE:
Wenn Sie einer vorhandenen Tabelle eine Fremdschlüsseleinschränkung mit ON DELETE CASCADE
Option hinzufügen, müssen Sie die folgenden Schritte ausführen:
Löschen Sie zuerst vorhandene Fremdschlüsseleinschränkungen:
Code language: SQL (Structured Query Language) (sql)
Fügen Sie zuerst eine neue Fremdschlüsseleinschränkung zu einer vorhandenen Tabelle hinzu Schlüsseleinschränkung mit ON DELETE CASCADE
Aktion:
In diesem Tutorial haben Sie mehr über PostgreSQL-Fremdschlüssel und die Verwendung der Fremdschlüsseleinschränkung zum Erstellen von Fremdschlüsseln für eine Tabelle erfahren.,
- War dieses tutorial hilfreich ?
- YesNo
Schreibe einen Kommentar