Dette script vil generere DDL-kommandoer for at slette dem alle:
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;
Castet t.oid::regclass
får syntaksen til at fungere for blandede store og små bogstaver, reserverede ord eller specialtegn i tabelnavne. Det forhindrer også SQL-injektion og sætter skemanavnet foran, hvor det er nødvendigt. Mere om objektidentifikatortyper i manualen
.
Du kan også automatisere bortfaldet, men det er uklogt ikke at tjekke, hvad du faktisk sletter, før du gør det.
Du kan tilføje CASCADE
til hver erklæring til DROP afhængige objekter (visninger og henvisninger til fremmednøgler). Men igen, det er uklogt medmindre du godt ved, hvad du laver. Udenlandske nøglebegrænsninger er ikke noget stort tab, men dette vil også droppe alle afhængige synspunkter helt. Uden CASCADE
du får fejlmeddelelser, der informerer dig om, hvilke objekter der forhindrer dig i at tabe bordet. Og så kan du håndtere det.