Redrock Postgres 搜索 英文
版本: 9.3 / 9.4 / 9.5 / 9.6 / 10 / 11 / 12 / 13 / 14 / 15 / 16 / 17

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 命令行中接收的任何设置。只有数据库所有者或超级用户才能更改数据库的会话首选项。某些变量不能通过此方式设置,或只能由超级用户设置。

参数

名称

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

allowconn

如果为假,则不能有任何人连接到此数据库。

connlimit

可以有多少并发连接与此数据库建立。-1 表示无限制。

istemplate

如果为真,则任何具有 CREATEDB 特权的用户都可以克隆此数据库;如果为假,则只有超级用户或数据库所有者才能克隆此数据库。

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 扩展。

另请参阅

CREATE DATABASEDROP DATABASESETCREATE TABLESPACE