Först och främst kan du ta bort många tabeller i en enda uttalande :
DROP TABLE mystuff_table_1, mystuff_table_2, mystuff_table_3 CASCADE;
Därefter kan du lägga alla dessa tabeller i ett separat schema . Lägg till det schemat till standard search_path
av dina användare, så allt är transparent.
Då behöver du bara:
DROP SCHEMA foo CASCADE;
Om det inte är tillräckligt kort, skapa en funktion som kör kommandot.
En statisk 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;
Eller en dynamisk 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;
Ring:
SELECT f_delete12();
För ett ännu mer dynamiskt uttalande:
Hur släpper jag alla tabeller i psql (PostgreSQL interaktiv terminal) som börjar med ett vanligt ord?