DROP TABLE în PostgreSQL

Tabele, scheme și tipuri (DDL) PostgreSQL 8.0+ (IF EXISTS: 8.2+)

Șterge definitiv un tabel, cu toate datele, indecșii, triggerele și constrângerile lui.

Sintaxă SQL
DROP TABLE [IF EXISTS] nume [, ...] [CASCADE | RESTRICT];

Ce face DROP TABLE

DROP TABLE elimină tabelul cu totul: structura și datele. Nu există coș de gunoi; singura cale de întoarcere este un backup sau o tranzacție neconfirmată (în PostgreSQL, DROP TABLE poate fi anulat cu ROLLBACK dacă rulează într-un BEGIN).

Dacă alte obiecte depind de tabel (un view, o cheie străină din alt tabel), comanda se oprește. Cu CASCADE, PostgreSQL șterge și obiectele dependente: view-urile dispar, iar cheile străine sunt eliminate din celelalte tabele (datele lor rămân).

Dacă vrei doar să golești tabelul și să păstrezi structura, folosește TRUNCATE sau DELETE.

Parametri

Parametru Descriere
IF EXISTS Nu dă eroare dacă tabelul nu există; afișează un NOTICE.
CASCADE Șterge și obiectele care depind de tabel.
RESTRICT Implicit. Refuză ștergerea dacă există obiecte dependente.

Ce returnează

Mesajul DROP TABLE.

Exemple

Exemplul 1: Tabel de care depind alte obiecte

Tabelul comenzi are o cheie străină spre clienti.

DROP TABLE clienti;
DROP TABLE clienti CASCADE;

Rezultat în psql

ERROR:  cannot drop table clienti because other objects depend on it
DETAIL:  constraint comenzi_client_id_fkey on table comenzi depends on table clienti
HINT:  Use DROP ... CASCADE to drop the dependent objects too.
NOTICE:  drop cascades to constraint comenzi_client_id_fkey on table comenzi
DROP TABLE

Exemplul 2: Ștergere sigură într-un script

DROP TABLE IF EXISTS import_temporar;

Rezultat în psql

NOTICE:  table "import_temporar" does not exist, skipping
DROP TABLE

Exemplul 3: Anulare cu ROLLBACK

BEGIN;
DROP TABLE produse;
ROLLBACK;
SELECT count(*) FROM produse;

Rezultat în psql

BEGIN
DROP TABLE
ROLLBACK
 count 
-------
   128
(1 row)

Greșeli frecvente

  • Folosești CASCADE fără să citești ce va șterge. Rulează mai întâi fără CASCADE: mesajul DETAIL listează obiectele dependente.
  • Rulezi comanda conectat la baza de date greșită (producție în loc de test). Verifică promptul psql sau SELECT current_database();.

Comenzi înrudite

  • CREATE TABLE: Creează un tabel nou, cu coloane, tipuri de date și constrângeri: PRIMARY KEY, NOT NULL, UNIQUE, CHECK, DEFAULT, FOREIGN KEY.
  • ALTER TABLE: Modifică un tabel existent: adaugă, șterge sau redenumește coloane, schimbă tipul, valoarea implicită și constrângerile.