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

ワイルドカードを使用してPostgreSQLで複数のテーブルを削除する方法

    カンマ区切りのリストを使用します:

    DROP TABLE foo, bar, baz;
    

    あなたが本当にフットガンを必要とするならば、これはそれの仕事をします:

    CREATE OR REPLACE FUNCTION footgun(IN _schema TEXT, IN _parttionbase TEXT) 
    RETURNS void 
    LANGUAGE plpgsql
    AS
    $$
    DECLARE
        row     record;
    BEGIN
        FOR row IN 
            SELECT
                table_schema,
                table_name
            FROM
                information_schema.tables
            WHERE
                table_type = 'BASE TABLE'
            AND
                table_schema = _schema
            AND
                table_name ILIKE (_parttionbase || '%')
        LOOP
            EXECUTE 'DROP TABLE ' || quote_ident(row.table_schema) || '.' || quote_ident(row.table_name) || ' CASCADE ';
            RAISE INFO 'Dropped table: %', quote_ident(row.table_schema) || '.' || quote_ident(row.table_name);
        END LOOP;
    END;
    $$;
    
    SELECT footgun('public', 'tablename');
    


    1. 進化する連絡先情報はデータベースを変更することを意味しますか?

    2. SQLiteReadOnlyDatabaseException:読み取り専用データベースを書き込もうとしました(コード1032)

    3. SQLServerでログインとしてActiveDirectoryユーザーグループを追加する方法

    4. SQLServerでデータベースメールを構成する方法