sql - 如何删除所有表而不是 Postgresql 中的模式?

标签 sql postgresql

我有一个模式分配给我的用户 (jason)。我无法删除架构,因为我没有这样做的权限。 有没有一种很好的方法来删除每个表、数据、架构中的所有内容,并使其就像我有一个新创建的架构一样。 基本与以下效果相同:

drop schema jason cascade;
create schema jason;

但实际上并没有删除架构。

最佳答案

公认的答案很好,但您可以利用匿名 block (PosgreSQL 9.0+) 一步完成:

DO $$
DECLARE 
    r record;
BEGIN
    FOR r IN SELECT quote_ident(tablename) AS tablename, quote_ident(schemaname) AS schemaname FROM pg_tables WHERE schemaname = 'public'
    LOOP
        RAISE INFO 'Dropping table %.%', r.schemaname, r.tablename;
        EXECUTE format('DROP TABLE IF EXISTS %I.%I CASCADE', r.schemaname, r.tablename);
    END LOOP;
END$$;

关于sql - 如何删除所有表而不是 Postgresql 中的模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31405743/

相关文章:

sql - 没有存储过程的参数化查询?

java - PPGool 'SHOW pool_nodes' 通过 jdbc 返回 'ERROR: unrecognized configuration parameter "pool_nodes"'

sql - 使用 Node.js 客户端和连接池在 Postgres 中最快的查询 - 存储函数或准备好的语句?

sql - 用滚动确定差值

mysql - 如何获得从开始到结束的准确时间

mysql - 如何优化这条SQL语句?

SQL外部表列长度问题

c# - Winforms:如何使用 SqlCommand 查询带有 sql 函数的数据库?

postgresql - 基于特定状态和相同 UUID 的过滤表

python - 使用定义变量创建表