Първо, можете да изтриете много таблици в една изявлението :
DROP TABLE mystuff_table_1, mystuff_table_2, mystuff_table_3 CASCADE;
След това можете да поставите всички тези таблици в отделна схема . Добавете тази схема към стандартната search_path
на вашите потребители, така че всичко е прозрачно.
Тогава всичко, от което се нуждаете, е:
DROP SCHEMA foo CASCADE;
Ако това не е достатъчно кратко, създайте функция, която изпълнява командата.
статична 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;
Или динамична 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;
Обаждане:
SELECT f_delete12();
За още по-динамично изявление:
Как да премахна всички таблици в psql (интерактивен терминал PostgreSQL), които започват с обща дума?