2024 年 9 月 26 日: PostgreSQL 17 发布!
支持的版本:当前 (17) / 16 / 15 / 14 / 13 / 12
开发版本:devel
不支持的版本:11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3

ALTER DATABASE

ALTER DATABASE — 修改数据库

概要

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

where option can be:

    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 权限。(请注意,超级用户自动拥有所有这些权限。)

第四种形式修改数据库的默认表空间。只有数据库所有者或超级用户可以执行此操作;您还必须对新的表空间具有创建权限。此命令会将数据库旧默认表空间中的所有表或索引物理移动到新的表空间。对于此数据库,新的默认表空间必须为空,并且没有人可以连接到数据库。非默认表空间中的表和索引不受影响。

其余形式修改 PostgreSQL 数据库中运行时配置变量的会话默认值。随后在该数据库中启动新会话时,指定的值将成为会话默认值。特定于数据库的默认值将覆盖 postgresql.conf 中存在的任何设置或从 postgres 命令行接收的任何设置。只有数据库所有者或超级用户可以修改数据库的会话默认值。某些变量无法通过这种方式设置,或者只能由超级用户设置。

参数

name

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

allowconn

如果为 false,则没有人可以连接到此数据库。

connlimit

可以连接到此数据库的并发连接数。-1 表示无限制。

istemplate

如果为 true,则任何具有 CREATEDB 权限的用户都可以克隆此数据库;如果为 false,则只有超级用户或数据库所有者可以克隆它。

new_name

数据库的新名称。

new_owner

数据库的新所有者。

new_tablespace

数据库的新默认表空间。

此形式的命令无法在事务块中执行。

REFRESH COLLATION VERSION

更新数据库排序规则版本。有关背景信息,请参见 备注

configuration_parameter
value

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

有关允许的参数名称和值的更多信息,请参见 SET第 19 章

备注

还可以将会话默认值绑定到特定角色,而不是绑定到数据库;请参见 ALTER ROLE。如果有冲突,特定于角色的设置将覆盖特定于数据库的设置。

示例

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

ALTER DATABASE test SET enable_indexscan TO off;

兼容性

ALTER DATABASE 语句是 PostgreSQL 扩展。

提交更正

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