Postgresql 中文操作指南

ALTER DATABASE

ALTER DATABASE — 更改数据库

Synopsis

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

Description

ALTER DATABASE 更改数据库的属性。

第一种形式更改特定于データベース的某些设置。(请参见以下内容以了解详细信息。)只有数据库所有者或超级用户才能更改这些设置。

第二种形式更改数据库的名称。只有数据库所有者或者超级用户才能重命名数据库;非超级用户所有者还必须具有 CREATEDB 权限。当前数据库不能重命名。(如果你需要执行操作,请连接到其他数据库。)

第三种形式更改数据库的所有者。要更改所有者,你必须具有 SET ROLE 的权限才能使用新的所有者角色,而且你必须具有 CREATEDB 权限。(请注意,超级用户自动拥有所有这些权限。)

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

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

Parameters

  • name

    • 要更改属性的数据库的名称。

  • allowconn

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

  • 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 20 以获取有关允许的参数名称和值的详细信息。

Notes

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

Examples

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

ALTER DATABASE test SET enable_indexscan TO off;

Compatibility

ALTER DATABASE 语句是 PostgreSQL 扩展。