Postgres:根据类似的模式名称删除表

时间:2014-03-20 14:52:09

标签: postgresql cascade sql-drop

我想从很多模式中删除一组表。 我想删除表的所有模式都以“pm_”开头。 我想从所有以“pm _”开头的模式中删除这组表。

类似的东西:

DROP TABLE IF EXISTS pm_%.tableName CASCADE;

(其中%将是名称延续)。

1 个答案:

答案 0 :(得分:1)

使用plpgsql,如下所示:

do $$ 
    declare schemaname text; 
    begin  
    for schemaname in select schema_name 
                     from information_schema.schemata 
                     where schema_name like 'pm\_%' 
                     loop 
        execute 'drop table if exists ' || quote_ident(schemaname) || '.tablename'; 
    end loop;  
end $$;