ALTER DATABASE
Name
ALTER DATABASE -- 修改一个数据库
Synopsis
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_
把数据库的指定配置参数的会话缺省值设置为给定的数值。 如果 _value_
是 DEFAULT
, 或者是相应的如RESET
选项使用的话,那么与数据库相关的参数设置将被删除,在新的会话中将继承系统级的缺省参数值。 用RESET ALL
可清除所有数据库相关的设置。 用SET FROM CURRENT
可保存会话参数的当前值保存为相关的数据库值。
参阅 SET 和 Chapter 18 获取有关允许的参数名和数值的更多信息。
注意
也可以把一个会话缺省值绑定到一个特定角色上而不是某个数据库上;参阅 ALTER ROLE 。 如果存在冲突,那么角色声明的参数值会覆盖数据库相关的参数值。
例子
要关闭在数据库test
上缺省的索引扫描:
ALTER DATABASE test SET enable_indexscan TO off;
兼容性
ALTER DATABASE
语句是一个 PostgreSQL 扩展。