Tout d'abord, vous pouvez supprimer plusieurs tables en une seule déclaration :
DROP TABLE mystuff_table_1, mystuff_table_2, mystuff_table_3 CASCADE;
Ensuite, vous pouvez placer toutes ces tables dans un schéma distinct . Ajoutez ce schéma à la valeur par défaut search_path
de vos utilisateurs, donc tout est transparent.
Alors tout ce dont vous avez besoin est :
DROP SCHEMA foo CASCADE;
Si ce n'est pas assez court, créez une fonction qui exécute la commande.
Une fonction SQL statique :
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;
Ou une fonction PL/pgSQL dynamique :
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;
Appel :
SELECT f_delete12();
Pour une déclaration encore plus dynamique :
Comment puis-je supprimer toutes les tables dans psql (terminal interactif PostgreSQL) qui commence par un mot commun ?