ALTER DATABASE

Name

ALTER DATABASE -- 修改一个数据库

Synopsis

ALTER DATABASE name [ [ WITH ] option [ ... ] ]
 
where option can be:
 
    CONNECTION LIMIT connlimit
 
ALTER DATABASE name SET parameter { TO | = } { value | DEFAULT }
ALTER DATABASE name RESET parameter

ALTER DATABASE name RENAME TO newname

ALTER DATABASE name OWNER TO new_owner

描述

ALTER DATABASE 改变一个数据库的属性。

第一种形式改变某个按数据库设置的东西。(见下文获取细节。) 只有数据库所有者或者超级用户可以改变这些设置。

第二和第三种形式为 PostgreSQL 数据库修改缺省的会话运行时配置变量。 随后在该数据库上启动一个新的会话的时候, 在启动会话之前先有效地运行 SET variable TO value。 数据库相关的缺省值覆盖任何在 postgresql.conf 里出现或者从 postmaster 命令行接收到的设置。 只有数据库所有者或者超级用户可以为一个数据库修改会话缺省。 有些变量不能用这种方法设置,或者是只能由超级用户设置。

第四种形式修改该数据库的名称。只有数据库所有者或者超级用户可以重命名一个数据库; 非超级用户必须拥有 CREATEDB 权限。 当前的数据库不能被重命名。(如果你需要这么做,那么连接另外一个数据库。)

第五种形式改变数据库的所有者。要改变所有者,你必须拥有该数据库并且还是新的所有角色的直接或者间接成员, 并且还必须有 CREATEDB 权限。(请注意,超级用户自动拥有所有这些权限。)

参数

name

需要修改属性的数据库的名字。

connlimit

对这个数据库可以做多少个并发连接。-1 意味着没有限制。

parameter
value

把指定的数据库配置变量的会话缺省值设置为给出的数值。 如果 valueDEFAULT 或者是等效的 RESET, 那么与数据库相关的变量设置将被删除,因此在新的会话中将继承缺省设置。 用 RESET ALL 清除所有设置。

参阅 SETChapter 17 获取有关允许的变量名和数值的 更多信息。

newname

数据库的新名字。

new_owner

数据库的新的所有者。

注意

我们也可以把一个会话缺省绑定到一个特定用户,而不是某个数据库上; 参阅 ALTER USER, 如果存在冲突,那么用户声明的设置覆盖数据库相关的设置。

例子

要关闭在数据库 test 上缺省的索引使用∶

ALTER DATABASE test SET enable_indexscan TO off;

兼容性

ALTER DATABASE 语句是一个 PostgreSQL 扩展。

又见

CREATE DATABASE, DROP DATABASE, SET