Drop if Exists vs. Drop in PostgreSQL
-
DROP
vs.DROP IF EXISTS
in PostgreSQL - Löschen Sie eine Tabelle, von der andere Tabellen abhängig sind
Die Anweisung DROP
löscht die Tabelle aus der Datenbank. Aber nur die Anweisung DROP
zeigt einen Fehler, wenn die Tabelle, die wir löschen möchten, nicht existiert.
Mit dem DROP IF EXISTS
können wir den Fehler beseitigen.
DROP
vs. DROP IF EXISTS
in PostgreSQL
Versuchen wir, eine Tabelle zu löschen, die nicht in der Datenbank vorhanden ist.
Beispiel:
postgres=# drop table account;
ERROR: table "account" does not exist
postgres=#
postgres=# drop table if exists account;
NOTICE: table "account" does not exist, skipping
DROP TABLE
postgres=#
Wenn wir drop
verwenden, zeigt es einen Fehler an, der besagt, dass die Tabelle nicht existiert. Aber die Verwendung von drop table if exists
zeigt einen Hinweis, dass die Tabelle nicht existiert; es wirft keinen Fehler.
Löschen Sie eine Tabelle, von der andere Tabellen abhängig sind
Nehmen wir an, wir haben zwei Tabellen, eine zum Verkauf und eine andere für den Kundendatensatz. Die Tabelle Sales
erfasst die Kunden und ihre Einkäufe, daher muss das Löschen der Tabelle Customer
mit der Option CASCADE
erfolgen.
Lassen Sie uns zuerst zwei Tabellen erstellen.
CREATE TABLE Customer(
id INT PRIMARY KEY,
full_name VARCHAR,
branch VARCHAR
);
CREATE TABLE Sales(
id INT PRIMARY KEY,
item_name VARCHAR,
price DECIMAL,
customer_id int,
FOREIGN KEY (customer_id) REFERENCES Customer(id)
);
Versuchen wir nun, die Tabelle Kunde
zu löschen:
postgres=# drop table customer;
ERROR: cannot drop table customer because other objects depend on it
DETAIL: constraint sales_customer_id_fkey on table sales depends on table customer
HINT: Use DROP ... CASCADE to drop the dependent objects too.
postgres=#
Wie wir besprochen haben, hängt der Sales
von der Customer
-Tabelle ab, die diesen Fehler anzeigt.
Probieren Sie die Option CASCADE
mit der Anweisung DROP
aus. Hier ist, wie wir es tun können.
postgres=# DROP TABLE IF EXISTS Customer CASCADE;
NOTICE: drop cascades to constraint sales_customer_id_fkey on table sales
DROP TABLE
postgres=#
Nun wird die Tabelle Kunde
gelöscht.
Hier prüfen wir, ob die Tabelle Kunde
existiert oder nicht. Wenn es existiert, dann löschen wir es mit CASCADE
.
Um mehr über das Löschen einer Tabelle zu erfahren, besuchen Sie die folgende offizielle Dokumentation.