On this page
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_USER | SESSION_USER }
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
Description
ALTER DATABASE
更改数据库的属性。
第一种形式更改某些特定的每个数据库设置。 (有关详细信息,请参见下文.)只有数据库所有者或超级用户才能更改这些设置。
第二种形式更改数据库的名称。只有数据库所有者或超级用户可以重命名数据库;非超级用户所有者还必须具有CREATEDB
特权。当前数据库无法重命名。 (如果需要,请连接到其他数据库.)
第三种形式更改数据库的所有者。要更改所有者,您必须拥有数据库,并且还必须是新拥有角色的直接或间接成员,并且您必须具有CREATEDB
特权。 (请注意,超级用户会自动拥有所有这些特权.)
第四种形式更改数据库的默认表空间。只有数据库所有者或超级用户可以执行此操作;您还必须具有新表空间的创建特权。该命令物理上将数据库的旧默认表空间中的任何表或索引移动到新表空间。此数据库的新默认表空间必须为空,并且没有人可以连接到该数据库。非默认表空间中的表和索引不受影响。
其余形式更改了 PostgreSQL 数据库运行时配置变量的会话默认值。每当随后在该数据库中启动新会话时,指定的值即成为会话默认值。特定于数据库的默认值将覆盖postgresql.conf
中存在的设置或从postgres
命令行接收到的任何设置。只有数据库所有者或超级用户才能更改数据库的会话默认值。某些变量不能以这种方式设置,或者只能由超级用户设置。
Parameters
name
- 要更改其属性的数据库的名称。
allowconn
- 如果为 false,则没有人可以连接到该数据库。
connlimit
- 可以与此数据库构建多少个并发连接。 -1 表示没有限制。
istemplate
- 如果为 true,则任何具有
CREATEDB
特权的用户都可以克隆此数据库;如果为 false,则只有超级用户或数据库所有者才能克隆它。
- 如果为 true,则任何具有
new_name
- 数据库的新名称。
new_owner
- 数据库的新所有者。
new_tablespace
- 数据库的新默认表空间。
这种形式的命令不能在事务块内执行。
configuration_parameter
value
- 将此数据库的会话缺省值(用于指定的配置参数)设置为给定值。如果*
value
*为DEFAULT
或等效地使用RESET
,则将删除特定于数据库的设置,因此系统范围的默认设置将在新会话中继承。使用RESET ALL
清除所有特定于数据库的设置。SET FROM CURRENT
将会话的当前参数值保存为特定于数据库的值。
- 将此数据库的会话缺省值(用于指定的配置参数)设置为给定值。如果*
有关允许的参数名称和值的更多信息,请参见SET和Chapter 19。
Notes
也可以将会话默认值绑定到特定角色,而不是数据库。参见ALTER ROLE。如果存在冲突,特定于角色的设置将覆盖特定于数据库的设置。
Examples
要在数据库test
中默认禁用索引扫描:
ALTER DATABASE test SET enable_indexscan TO off;
Compatibility
ALTER DATABASE
语句是 PostgreSQL 扩展。