Borrar una tabla con DROP TABLE en PostgreSQL

Si ya has creado una tabla, ahora debes aprender a borrar una tabla en PostgreSQL. Es muy sencillo, vamos a ver qué opciones nos da PostgreSQL.

Sintaxis

Eliminar una tabla

DROP TABLE [IF EXISTS] nombreTabla 
[CASCADE | RESTRICT];Lenguaje del código: CSS (css)

En la sintaxis anterior:

  • Primero especificamos el nombre de la tabla que quieres borrar después de escribir DROP TABLE.
  • En segundo lugar, incluye las palabras IF EXISTS si quieres comprobar antes si existe o no ya que si la tabla no existe te devolverá un error.

En el caso de que tu tabla se este utilizando por otros objetos como un procedimiento almacenado, una vista, un disparador (trigger), etc. el comando drop table no te permitirá borrarla. Si es tu caso debes utilizar una de estas opciones:

  • Cascade: esta opción eliminara la tabla que indiques y todo objeto que dependa de la tabla.
  • Restrict: esta opción no te permitirá eliminar la tabla si algún objeto depende de ella. Este es el comportamiento por defecto de DROP TABLE aunque no lo escribas.

Eliminar varias tablas

Puedes eliminar varias tablas utilizando la siguiente sintaxis:

DROP TABLE [IF EXISTS] 
   nombreTabla_1,
   nombreTabla_2,
   ...
[CASCADE | RESTRICT];Lenguaje del código: CSS (css)

Ten en cuenta que necesitas tener los roles de superusuario, propietario del esquema o propietario de la tabla para poder borrar tablas.

Ejemplos

Borrar una tabla que no existe

Aquí tenemos un ejemplo de intentar borrar una tabla que no existe. Que te devuelva un error no supone mucho problema, al no ser que utilices el comando en un procedimiento almacenado que al intentar borrar una tabla que no existe te podría parar el proceso:

drop table productos;
Borrar una tabla con DROP TABLE en PostgreSQL

Borrar una tabla si existe

En este ejemplo vemos cómo solo borrara la tabla si existe. En caso de que no exista nos informa, pero no nos devuelve error:

drop table IF EXISTS productos;

Borrar una tabla en cascada

Al especificar en este ejemplo que borre la tabla marcas en cascada, borra todo objeto que depende de la tabla y te informa de ello:

drop table IF EXISTS marcas
CASCADE;

Ejemplo completo

Copia y pega el siguiente código en tu consola de PostgreSQL y realiza paso a paso leyendo los comentarios:

-- Intentamos borrar la tabla productos
drop table productos;

-- Borrar la tabla productos solo si existe
drop table IF EXISTS productos;

-- Creamos una tabla llamada marcas
CREATE TABLE marcas (
	id_marca INT PRIMARY KEY,
	nombre VARCHAR (50)
);

-- Creamos una tabla llamada coches, referenciada a marcas
CREATE TABLE coches (
	id_coche serial PRIMARY KEY,
	matricula VARCHAR (255) NOT NULL,
	id_marca INT NOT NULL,
	FOREIGN KEY (id_marca) 
          REFERENCES marcas (id_marca)
);

-- Borramos la tabla marcas en cascada
drop table IF EXISTS marcas
CASCADE;

-- Comprobamos como la tabla coches no existe
-- porque dependia de la tabla marcas
select *
from coches;Lenguaje del código: PHP (php)

Escribir un comentario