受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发版本: devel

ALTER DATABASE

ALTER DATABASE — 更改一个数据库

Synopsis

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

其中option可以是:

    ALLOW_CONNECTIONS allowconn
    CONNECTION LIMIT connlimit
    IS_TEMPLATE istemplate

ALTER DATABASE name RENAME TO new_name

ALTER DATABASE name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }

ALTER DATABASE name SET TABLESPACE new_tablespace

ALTER DATABASE name REFRESH COLLATION VERSION

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权限。当前连接的数据库不能被重命名(如果需要这样做,请连接到另一个数据库)。

第三种形式更改数据库的拥有者。要修改拥有者,你必须能够对新拥有者角色执行 SET ROLE,并且还必须具有CREATEDB权限。 (注意,超级用户会自动拥有这些权限。)

第四种形式更改数据库的默认表空间。只有数据库拥有者或者超级用户可以这样做;你还必须对新表空间具有创建权限。该命令会将数据库旧默认表空间中的所有表和索引在物理上移动到新表空间中。对于该数据库而言,新默认表空间必须为空,并且不能有人连接到该数据库。位于非默认表空间中的表和索引不受影响。复制文件到新表空间所使用的方法会受到file_copy_method设置的影响。

其余形式会更改某个PostgreSQL数据库的运行时配置变量的会话默认值。此后每当在该数据库中启动一个新会话时,指定的值就会成为会话默认值。数据库特定的默认值会覆盖postgresql.conf中的设置,或者从postgres命令行接收到的设置。只有数据库拥有者或者超级用户才能更改该数据库的会话默认值。某些变量不能以这种方式设置,或者只能由超级用户设置。

参数

name

要修改其属性的数据库名称。

allowconn

如果为假,则没有人能连接到这个数据库。

connlimit

这个数据库允许多少并发连接。-1 表示没有限制。

istemplate

如果为真,则任何具有CREATEDB权限的用户都可以从这个数据库克隆。如果为假,则只有超级用户或者该数据库的拥有者可以克隆它。

new_name

数据库的新名称。

new_owner

数据库的新拥有者。

new_tablespace

数据库的新默认表空间。

这种形式的命令不能在事务块内执行。

REFRESH COLLATION VERSION

更新数据库排序规则版本。背景信息见Notes

configuration_parameter
value

将此数据库在指定配置参数上的会话默认值设为给定值。如果 valueDEFAULT,或者等效地使用了 RESET,则数据库特定设置会被移除,因此新会话将继承系统范围的默认设置。使用 RESET ALL可清除所有数据库特定设置。 SET FROM CURRENT会把该参数在当前会话中的值保存为数据库特定值。

关于允许的参数名和值的更多信息,见SETChapter 19

注解

也可以把会话默认值绑定到特定角色,而不是数据库;见ALTER ROLE。如果发生冲突,角色特定设置会覆盖数据库特定设置。

示例

要在数据库test中默认禁用索引扫描:

ALTER DATABASE test SET enable_indexscan TO off;

兼容性

ALTER DATABASE语句是一个PostgreSQL扩展。

提交更正

如果您发现文档中有不正确的内容、与您使用特定功能的经验不符或需要进一步说明,请使用此表单来报告文档问题。