Pertama-tama, Anda dapat menghapus banyak tabel dalam tunggal pernyataan :
DROP TABLE mystuff_table_1, mystuff_table_2, mystuff_table_3 CASCADE;
Selanjutnya, Anda dapat menempatkan semua tabel tersebut ke dalam skema terpisah . Tambahkan skema itu ke default search_path
pengguna Anda, jadi semuanya transparan.
Maka yang Anda butuhkan hanyalah:
DROP SCHEMA foo CASCADE;
Jika itu tidak cukup singkat, buat fungsi yang menjalankan perintah.
A fungsi SQL statis :
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;
Atau fungsi PL/pgSQL dinamis :
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;
Telepon:
SELECT f_delete12();
Untuk pernyataan yang lebih dinamis:
Bagaimana cara menghapus semua tabel di psql (terminal interaktif PostgreSQL) yang dimulai dengan kata umum?