ALTER DATABASE

名称

ALTER DATABASE -- 修改一个数据库

大纲

ALTER DATABASE name [ [ WITH ] option [ ... ] ]

 这里 option 可以是以下参数:

CONNECTION LIMIT connlimit

ALTER DATABASE name RENAME TO new_name

ALTER DATABASE name OWNER TO new_owner

ALTER DATABASE name SET TABLESPACE new_tablespace

ALTER DATABASE name SET configuration_parameter { TO | = } { value | DEFAULT }
ALTER DATABASE name SET configuration_parameter FROM CURRENT
ALTER DATABASE name RESET configuration_parameter
ALTER DATABASE name RESET ALL

描述

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

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

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

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

第四种形式改变数据库的缺省表空间。要改变缺省表空间,你必须是该数据库的所有者或是超级用户, 并且还必须有新的表空间的读写权限。 这个语句会从物理上将一个数据库原来缺省表空间上的表和索引移至新的表空间。注意不在缺省表空间的表和索引不受此影响。

其他形式为 PostgreSQL 数据库修改缺省的会话运行时配置变量。 任何时候在一个数据库上启动一个新的会话的时候,一些特定的参数值会成为当前会话的缺省值。 与指定数据库相关的缺省会覆盖在postgresql.conf 参数文件中指定的对应值或是从postgres服务启动时在命令行上指定的参数值。 只有数据库所有者或者超级用户可以为一个数据库修改会话缺省值。 有些变量不能用这种方法设置,或者是只能由超级用户设置。

参数

name

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

connlimit

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

new_name

数据库的新名字。

new_owner

数据库新的所有者。

new_tablespace

数据库的新的缺省表空间。

configuration_parameter
value

把数据库的指定配置参数的会话缺省值设置为给定的数值。 如果 valueDEFAULT , 或者是相应的如RESET选项使用的话,那么与数据库相关的参数设置将被删除,在新的会话中将继承系统级的缺省参数值。 用RESET ALL 可清除所有数据库相关的设置。 用SET FROM CURRENT可保存会话参数的当前值保存为相关的数据库值。

参阅 SET第 18 章 获取有关允许的参数名和数值的更多信息。

注意

也可以把一个会话缺省值绑定到一个特定角色上而不是某个数据库上;参阅 ALTER ROLE 。 如果存在冲突,那么角色声明的参数值会覆盖数据库相关的参数值。

例子

要关闭在数据库test上缺省的索引扫描:

ALTER DATABASE test SET enable_indexscan TO off;

兼容性

ALTER DATABASE 语句是一个 PostgreSQL 扩展。

参见

CREATE DATABASE, DROP DATABASE, SET, CREATE TABLESPACE