Dieses Skript generiert die DDL-Befehle, um sie alle zu löschen:
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;
Die Umwandlung t.oid::regclass
sorgt dafür, dass die Syntax auch für Bezeichner mit Groß- und Kleinschreibung, reservierte Wörter oder Sonderzeichen in Tabellennamen funktioniert. Es verhindert auch die SQL-Einschleusung und stellt den Schemanamen bei Bedarf voran. Mehr über Objektkennungstypen im Handbuch
.
Sie könnten das Ablegen auch automatisieren, aber das ist unklug nicht zu prüfen, was Sie tatsächlich löschen, bevor Sie dies tun.
Sie könnten CASCADE
anhängen
zu jeder Anweisung zu DROP-abhängigen Objekten (Ansichten und referenzierende Fremdschlüssel). Aber auch das ist unklug es sei denn, Sie wissen genau, was Sie tun. Fremdschlüsseleinschränkungen sind kein großer Verlust, aber dadurch werden auch alle abhängigen Ansichten vollständig gelöscht. Ohne CASCADE
Sie erhalten Fehlermeldungen, die Sie darüber informieren, welche Objekte Sie daran hindern, die Tabelle zu löschen. Und damit kann man dann umgehen.