まず、単一のシングルで多くのテーブルを削除できますステートメント :
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インタラクティブターミナル)のすべてのテーブルを削除するにはどうすればよいですか?