Allereerst kun je veel tabellen in een enkele verklaring :
DROP TABLE mystuff_table_1, mystuff_table_2, mystuff_table_3 CASCADE;
Vervolgens zou je al die tabellen in een apart schema kunnen plaatsen . Voeg dat schema toe aan de standaard search_path
van uw gebruiker(s), dus het is allemaal transparant.
Dan is alles wat je nodig hebt:
DROP SCHEMA foo CASCADE;
Als dat niet kort genoeg is, maak dan een functie die de opdracht uitvoert.
Een statische SQL-functie :
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;
Of een dynamische PL/pgSQL-functie :
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;
Bel:
SELECT f_delete12();
Voor een nog dynamischer statement:
Hoe verwijder ik alle tabellen in psql (PostgreSQL interactieve terminal) die beginnen met een gewoon woord?