Този скрипт ще генерира DDL командите, за да ги премахне всичките:
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;
Каст t.oid::regclass
кара синтаксиса да работи и за идентификатори със смесен регистър, запазени думи или специални знаци в имената на таблици. Той също така предотвратява SQL инжектиране и добавя името на схемата, когато е необходимо. Повече за типове идентификатори на обекти в ръководството
.
Относно пътя за търсене на схема.
Можете също така да автоматизирате изхвърлянето, но е неразумно не за да проверявате какво всъщност изтривате, преди да го направите.
Можете да добавите CASCADE
към всеки израз към DROP зависими обекти (изгледи и препращащи външни ключове). Но, отново, това е неразумно освен ако не знаете много добре какво правите. Ограниченията на външния ключ не са голяма загуба, но това също ще премахне напълно всички зависими изгледи. Без CASCADE
получавате съобщения за грешка, които ви информират кои обекти ви пречат да изпуснете таблицата. И след това можете да се справите с него.