En primer lugar, puede eliminar muchas tablas en un solo declaración :
DROP TABLE mystuff_table_1, mystuff_table_2, mystuff_table_3 CASCADE;
A continuación, podría poner todas esas tablas en un esquema separado . Agregue ese esquema al predeterminado search_path
de su(s) usuario(s), por lo que todo es transparente.
Entonces todo lo que necesitas es:
DROP SCHEMA foo CASCADE;
Si eso no es lo suficientemente breve, cree una función que ejecute el comando.
Una función SQL estática :
CREATE OR REPLACE FUNCTION f_delete12() RETURNS void AS
$func$
DROP TABLE mystuff_table_1, mystuff_table_2, mystuff_table_3, ... CASCADE;
$func$ LANGUAGE sql VOLATILE;
O una función PL/pgSQL dinámica :
CREATE OR REPLACE FUNCTION f_delete12()
RETURNS void AS
$func$
BEGIN
EXECUTE (
SELECT 'DROP TABLE ' || string_agg('mystuff_table_' || g, ', ')
|| ' CASCADE'
FROM generate_series(1,12) g -- numbers 1 to 12
);
END
$func$ LANGUAGE plpgsql VOLATILE;
Llamar:
SELECT f_delete12();
Para una declaración aún más dinámica:
¿Cómo elimino todas las tablas en psql (terminal interactivo de PostgreSQL) que comienzan con una palabra común?