sql >> データベース >  >> RDS >> PostgreSQL

1回の急降下で多くの(すべてではない)テーブルをドロップする方法は?

    まず、単一のシングルで多くのテーブルを削除できますステートメント

    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インタラクティブターミナル)のすべてのテーブルを削除するにはどうすればよいですか?



    1. FILESTREAM データの物理的な場所

    2. ANDおよびORを使用したクエリで複数の行を取得する

    3. SQLServerでテーブル値関数を変更する

    4. 複数のテーブルで同じ値を検索し、結果が得られたテーブルを取得します