Drop if Exists vs. Drop in PostgreSQL

Shihab Sikder 20 Juni 2023
  1. DROP vs. DROP IF EXISTS in PostgreSQL
  2. Löschen Sie eine Tabelle, von der andere Tabellen abhängig sind
Drop if Exists vs. Drop in PostgreSQL

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.

Shihab Sikder avatar Shihab Sikder avatar

I'm Shihab Sikder, a professional Backend Developer with experience in problem-solving and content writing. Building secure, scalable, and reliable backend architecture is my motive. I'm working with two companies as a part-time backend engineer.

LinkedIn Website

Verwandter Artikel - PostgreSQL Table