Soltar si existe vs Soltar en PostgreSQL

Shihab Sikder 20 junio 2023
  1. DROP vs DROP SI EXISTE en PostgreSQL
  2. Soltar una tabla con otras tablas dependientes de
Soltar si existe vs Soltar en PostgreSQL

La instrucción DROP elimina la tabla de la base de datos. Pero solo la declaración DROP muestra un error si la tabla que estamos tratando de eliminar no existe.

Mediante el botón DROP SI EXISTE, podemos eliminar el error.

DROP vs DROP SI EXISTE en PostgreSQL

Intentemos eliminar una tabla que no existe en la base de datos.

Ejemplo:

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=#

Cuando usamos drop, muestra un error que indica que la tabla no existe. Pero, al usar soltar tabla si existe se muestra un aviso de que la tabla no existe; no arroja ningún error.

Soltar una tabla con otras tablas dependientes de

Digamos que tenemos dos mesas, una para la venta y otra para el registro de clientes. La tabla Ventas registra los clientes y sus compras, por lo que el borrado de la tabla Cliente debe hacerse con la opción CASCADA.

Vamos a crear dos tablas primero.

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)
);

Ahora, intentemos eliminar la tabla Cliente:

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=#

Como hemos comentado, las Ventas dependen de la tabla Cliente, que muestra este error.

Pruebe la opción CASCADE con la instrucción DROP. Así es como podemos hacerlo.

postgres=# DROP TABLE IF EXISTS Customer CASCADE;
NOTICE:  drop cascades to constraint sales_customer_id_fkey on table sales
DROP TABLE
postgres=#

Ahora, la tabla Cliente se elimina.

Aquí, estamos comprobando si la tabla Cliente existe o no. Si existe, entonces lo borramos con CASCADE.

Para obtener más información sobre cómo colocar una mesa, visite la siguiente documentación oficial.

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

Artículo relacionado - PostgreSQL Table