Nejprve můžete smazat mnoho tabulek v jedné prohlášení :
DROP TABLE mystuff_table_1, mystuff_table_2, mystuff_table_3 CASCADE;
Dále můžete všechny tyto tabulky umístit do samostatného schématu . Přidejte toto schéma do výchozího search_path
vašich uživatelů, takže je vše transparentní.
Pak vše, co potřebujete, je:
DROP SCHEMA foo CASCADE;
Pokud to není dost krátké, vytvořte funkci, která příkaz spustí.
Statická funkce SQL :
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;
Nebo dynamická funkce PL/pgSQL :
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;
Volejte:
SELECT f_delete12();
Pro ještě dynamičtější prohlášení:
Jak zruším všechny tabulky v psql (interaktivní terminál PostgreSQL), který začíná běžným slovem?