Postgresql: 如何检查模式是否存在?

85

我需要动态创建、管理和删除模式(schema)。如果我要创建的模式已经存在,我希望能够(通过外部手段)有条件地将其删除并按照指定重新创建。如何检查PostgreSQL 9服务器上是否存在该模式?

目前,我的做法是:

select exists (select * from pg_catalog.pg_namespace where nspname = 'schemaname');

但我感觉可能还有其他方法...这是查询Postgres特定schema存在的“正确”方式吗?


20
未来的访客注意:即将推出的Postgres 9.3将拥有“if not exists”创建模式。 - user330315
11个回答

-1

3
对于PostgreSQL而言,这个回答是不准确的。你的回答涉及TransactSQL的限制,而非PostgreSQL。 - Chris Cashwell
如果您添加CASCADE,可以删除非空模式: DROP SCHEMA myschema CASCADE; - neno

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接