为什么我需要RESTRICT通配符来删除PostgreSQL中的模式

时间:2013-05-09 01:39:19

标签: postgresql schema sql-drop

我对PostgreSQL的经验很少。我一直在阅读教程和文档,为了创建或删除模式,所有人都说我只需要执行:

CREATE SCHEMA myschema; 
DROP SCHEMA myschema; 

但它不起作用。我终于发现我必须使用:

CREATE SCHEMA myschema AUTHORIZATION pgsql;
DROP SCHEMA myschema RESTRICT;

我的安装是否已损坏,或者我添加了一些我不应该使用的功能?

更新: 如果我使用Mac OS X中的pgAdmin,它可以工作。 我没有收到任何错误或警告。 基本上我只是登录pgsql帐户:

su pgsql

然后

psql mydatabase

1 个答案:

答案 0 :(得分:1)

有许多事情可能导致命令无法正常终止。我相信这个答案也会对其他人有所帮助。这可能看起来过于局部化了,但我听说过这对初学者来说是值得写的。

一般来说,像CREATE SCHEMA或DROP SCHEMA这样的实用程序语句将在psql中返回一些内容,无论是错误还是对已完成内容的描述。如果没有发生,那么事情是不对的。首先要做的是查看提示。

PostgreSQL中的提示符采用以下形式:[dbname] [line-status] [is-superuser]

因此,对于新行,数据库mydb,nonsuperuser,提示符如下所示: mydb=>

如果我是超级用户,我会:

mydb=#

现在要查看的关键字符是=所在的字符。各种符号都有特殊含义:

  • =换行(准备新输入)
  • -从上一行继续。你忘记了分号吗?
  • (括号中。你的括号是不平衡的。
  • $在美元报价栏中。这些就像$quote$string literal$quote$
  • '在单引号字符串文字块
  • "在双引号标识符

可能还有其他一些,但这些是最常见的。除了=-之外,它们通常都是不言自明的。