PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

PostgreSQL:FREMDSCHLÜSSEL/ON LÖSCHKASKADE

Ein Fremdschlüssel mit Kaskadenlöschung bedeutet, dass wenn ein Datensatz in der übergeordneten Tabelle gelöscht wird, die entsprechenden Datensätze in der untergeordneten Tabelle automatisch gelöscht werden. Dies wird als Kaskadenlöschung bezeichnet.

Sie sagen im Gegenteil, das heißt nicht, dass beim Löschen aus der untergeordneten Tabelle Datensätze aus der übergeordneten Tabelle gelöscht werden.

UPDATE 1:

BEIM KASKADE LÖSCHEN Option ist, anzugeben, ob Zeilen in einer untergeordneten Tabelle gelöscht werden sollen, wenn entsprechende Zeilen in der übergeordneten Tabelle gelöscht werden. Wenn Sie keine kaskadierenden Löschungen angeben, verhindert das Standardverhalten des Datenbankservers, dass Sie Daten in einer Tabelle löschen, wenn andere Tabellen darauf verweisen.

Wenn Sie diese Option angeben, löscht der Datenbankserver später beim Löschen einer Zeile in der übergeordneten Tabelle auch alle Zeilen, die dieser Zeile (Fremdschlüssel) in einer untergeordneten Tabelle zugeordnet sind. Der Hauptvorteil des Cascading-Deletes-Features besteht darin, dass Sie die Menge der SQL-Anweisungen reduzieren können, die Sie zum Ausführen von Löschaktionen benötigen.

Es geht also darum, was passiert, wenn Sie Zeilen aus der übergeordneten Tabelle und nicht aus der untergeordneten Tabelle löschen.

Wenn also in Ihrem Fall der Benutzer Einträge aus der CATs-Tabelle entfernt, werden Zeilen aus der Büchertabelle gelöscht. :)

Hoffe das hilft dir :)