我有一个模式分配给我的用户 (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/