Trước hết, bạn có thể xóa nhiều bảng trong một tuyên bố :
DROP TABLE mystuff_table_1, mystuff_table_2, mystuff_table_3 CASCADE;
Tiếp theo, bạn có thể đặt tất cả các bảng đó vào một lược đồ riêng biệt . Thêm giản đồ đó vào mặc định search_path
của (các) người dùng của bạn, vì vậy tất cả đều minh bạch.
Sau đó, tất cả những gì bạn cần là:
DROP SCHEMA foo CASCADE;
Nếu chưa đủ ngắn, hãy tạo một hàm thực thi lệnh.
A Hàm SQL tĩnh :
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;
Hoặc hàm PL / pgSQL động :
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;
Gọi:
SELECT f_delete12();
Đối với một câu lệnh động hơn nữa:
Làm cách nào để loại bỏ tất cả các bảng trong psql (thiết bị đầu cuối tương tác PostgreSQL) bắt đầu bằng một từ thông dụng?