Zunächst einmal können Sie viele Tabellen auf einmal löschen Erklärung :
DROP TABLE mystuff_table_1, mystuff_table_2, mystuff_table_3 CASCADE;
Als Nächstes könnten Sie alle diese Tabellen in ein separates Schema einfügen . Fügen Sie dieses Schema zum standardmäßigen search_path
Ihrer Benutzer, also ist alles transparent.
Dann brauchen Sie nur noch:
DROP SCHEMA foo CASCADE;
Wenn das nicht kurz genug ist, erstellen Sie eine Funktion, die den Befehl ausführt.
Eine statische SQL-Funktion :
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;
Oder eine dynamische PL/pgSQL-Funktion :
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;
Aufruf:
SELECT f_delete12();
Für eine noch dynamischere Aussage:
Wie lösche ich alle Tabellen in psql (interaktives PostgreSQL-Terminal), die mit einem gemeinsamen Wort beginnen?