Dit script genereert de DDL-commando's om ze allemaal te laten vallen:
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;
De cast t.oid::regclass
zorgt ervoor dat de syntaxis ook werkt voor hoofdletters, gereserveerde woorden of speciale tekens in tabelnamen. Het voorkomt ook SQL-injectie en voegt waar nodig de schemanaam toe. Meer over type object-ID's in de handleiding
.
Je zou het droppen ook kunnen automatiseren, maar het is onverstandig niet om te controleren wat u daadwerkelijk verwijdert voordat u dat doet.
Je zou kunnen toevoegen CASCADE
naar elke instructie naar DROP-afhankelijke objecten (weergaven en verwijzende externe sleutels). Maar nogmaals, dat is onverstandig tenzij je heel goed weet wat je doet. Foreign key-beperkingen zijn geen groot verlies, maar dit zal ook alle afhankelijke weergaven volledig laten vallen. Zonder CASCADE
u krijgt foutmeldingen die u informeren over welke objecten u ervan weerhouden de tafel te laten vallen. En dan kun je ermee omgaan.