ALTER DATABASE — 更改数据库
ALTER DATABASEname
[ [ WITH ]option
[ ... ] ] whereoption
can be: ALLOW_CONNECTIONSallowconn
CONNECTION LIMITconnlimit
IS_TEMPLATEistemplate
ALTER DATABASEname
RENAME TOnew_name
ALTER DATABASEname
OWNER TO {new_owner
| CURRENT_ROLE | CURRENT_USER | SESSION_USER } ALTER DATABASEname
SET TABLESPACEnew_tablespace
ALTER DATABASEname
REFRESH COLLATION VERSION ALTER DATABASEname
SETconfiguration_parameter
{ TO | = } {value
| DEFAULT } ALTER DATABASEname
SETconfiguration_parameter
FROM CURRENT ALTER DATABASEname
RESETconfiguration_parameter
ALTER DATABASEname
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
将此数据库会话的指定配置参数的默认值设置为给定值。如果 value
是 DEFAULT
或等效地使用了 RESET
,则会删除特定于数据库的设置,因此系统范围的默认设置将在新会话中继承。使用 RESET ALL
清除所有特定于数据库的设置。 SET FROM CURRENT
将会话的当前参数值保存为特定于数据库的值。
还可以将会话默认值绑定到特定角色,而不是数据库;请参见 ALTER ROLE。如果存在冲突,特定于角色的设置将覆盖特定于数据库的设置。
在数据库 test
中默认禁用索引扫描
ALTER DATABASE test SET enable_indexscan TO off;
ALTER DATABASE
语句是 PostgreSQL 扩展。