Questo script genererà i comandi DDL per eliminarli tutti:
SELECT 'DROP TABLE ' || t.oid::regclass || ';'
FROM pg_class t
-- JOIN pg_namespace n ON n.oid = t.relnamespace -- to select by schema
WHERE t.relkind = 'r'
AND t.relname ~~ E'doors\_%' -- enter search term for table here
-- AND n.nspname ~~ '%myschema%' -- optionally select by schema(s), too
ORDER BY 1;
Il cast t.oid::regclass
fa funzionare la sintassi anche per identificatori di maiuscole e minuscole miste, parole riservate o caratteri speciali nei nomi delle tabelle. Impedisce inoltre l'iniezione SQL e antepone il nome dello schema ove necessario. Ulteriori informazioni sui tipi di identificatori di oggetto nel manuale
.
Informazioni sul percorso di ricerca dello schema.
Potresti anche automatizzare il rilascio, ma non è imprudente non controllare cosa elimini effettivamente prima di farlo.
Puoi aggiungere CASCADE
a ogni istruzione per DROP oggetti dipendenti (viste e riferimenti a chiavi esterne). Ma, ancora una volta, è imprudente a meno che tu non sappia molto bene cosa stai facendo. I vincoli della chiave esterna non rappresentano una grande perdita, ma ciò eliminerà completamente anche tutte le viste dipendenti. Senza CASCADE
ricevi messaggi di errore che ti informano quali oggetti ti impediscono di eliminare la tabella. E poi puoi affrontarlo.