文档 / SQL 命令 / 数据库、模式与表空间
SQL COMMAND · 数据库、模式与表空间
ALTER DATABASE
更改一个数据库
ALTER数据库、模式与表空间引入 10(基线)现存至 20 devel1 次语法变更
- 动词
ALTER- 对象
DATABASE- 引入版本
- 10(基线)
- 状态
- 现存
- 语法变更次数
- 1
- 手册小节数
- 6
版本轨迹
相对 PostgreSQL 17 语法未变,正文有更新。
语法铁道图 PostgreSQL 18
沿轨道从左向右阅读,分岔表示选择,绕行表示可选,回环表示重复。方框为参数,点击带下划线的参数可展开子规则。
option
ALTER DATABASE · 语法 2
ALTER DATABASE · 语法 3
ALTER DATABASE · 语法 4
ALTER DATABASE · 语法 5
ALTER DATABASE · 语法 6
ALTER DATABASE · 语法 7
ALTER DATABASE · 语法 8
ALTER DATABASE · 语法 9
语法概要
ALTER DATABASEname[ [ WITH ]option[ ... ] ] 其中option可以是: ALLOW_CONNECTIONSallowconnCONNECTION LIMITconnlimitIS_TEMPLATEistemplateALTER DATABASEnameRENAME TOnew_nameALTER DATABASEnameOWNER TO {new_owner| CURRENT_ROLE | CURRENT_USER | SESSION_USER } ALTER DATABASEnameSET TABLESPACEnew_tablespaceALTER DATABASEnameREFRESH COLLATION VERSION ALTER DATABASEnameSETconfiguration_parameter{ TO | = } {value| DEFAULT } ALTER DATABASEnameSETconfiguration_parameterFROM CURRENT ALTER DATABASEnameRESETconfiguration_parameterALTER DATABASEnameRESET ALL
描述
ALTER DATABASE更改一个数据库的属性。
第一种形式更改某些数据库级设置(详见下文)。只有数据库拥有者或者超级用户才能更改这些设置。
第二种形式更改数据库的名称。只有数据库拥有者或者超级用户可以重命名数据库;非超级用户拥有者还必须具有CREATEDB权限。当前连接的数据库不能被重命名(如果需要这样做,请连接到另一个数据库)。
第三种形式更改数据库的拥有者。要修改拥有者,你必须能够对新拥有者角色执行 SET ROLE,并且还必须具有CREATEDB权限。 (注意,超级用户会自动拥有这些权限。)
第四种形式更改数据库的默认表空间。只有数据库拥有者或者超级用户可以这样做;你还必须对新表空间具有创建权限。该命令会将数据库旧默认表空间中的所有表和索引在物理上移动到新表空间中。对于该数据库而言,新默认表空间必须为空,并且不能有人连接到该数据库。位于非默认表空间中的表和索引不受影响。复制文件到新表空间所使用的方法会受到file_copy_method设置的影响。
其余形式会更改某个PostgreSQL数据库的运行时配置变量的会话默认值。此后每当在该数据库中启动一个新会话时,指定的值就会成为会话默认值。数据库特定的默认值会覆盖postgresql.conf中的设置,或者从postgres命令行接收到的设置。只有数据库拥有者或者超级用户才能更改该数据库的会话默认值。某些变量不能以这种方式设置,或者只能由超级用户设置。
参数
name要修改其属性的数据库名称。
allowconn如果为假,则没有人能连接到这个数据库。
connlimit这个数据库允许多少并发连接。-1 表示没有限制。
istemplate如果为真,则任何具有
CREATEDB权限的用户都可以从这个数据库克隆。如果为假,则只有超级用户或者该数据库的拥有者可以克隆它。new_name数据库的新名称。
new_owner数据库的新拥有者。
new_tablespace数据库的新默认表空间。
这种形式的命令不能在事务块内执行。
REFRESH COLLATION VERSION更新数据库排序规则版本。背景信息见Notes。
configuration_parametervalue将此数据库在指定配置参数上的会话默认值设为给定值。如果
value是DEFAULT,或者等效地使用了RESET,则数据库特定设置会被移除,因此新会话将继承系统范围的默认设置。使用RESET ALL可清除所有数据库特定设置。SET FROM CURRENT会把该参数在当前会话中的值保存为数据库特定值。关于允许的参数名和值的更多信息,见SET和Chapter 19。
注解
也可以把会话默认值绑定到特定角色,而不是数据库;见ALTER ROLE。如果发生冲突,角色特定设置会覆盖数据库特定设置。
示例
要在数据库test中默认禁用索引扫描:
ALTER DATABASE test SET enable_indexscan TO off;
兼容性
ALTER DATABASE语句是一个PostgreSQL扩展。
参见
语法演化
相邻大版本之间的差异,新的在前。版本号链接到对应快照。
PostgreSQL 18← 17正文更新
正文更新PostgreSQL 17← 16正文更新
正文更新PostgreSQL 16← 15正文更新
正文更新PostgreSQL 15← 14正文更新
正文更新PostgreSQL 14← 13语法变化
+ ALTER DATABASE name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }++ ALTER DATABASE name REFRESH COLLATION VERSION− ALTER DATABASE name OWNER TO { new_owner | CURRENT_USER | SESSION_USER }正文更新
同组命令
| 命令 | 动词 | 对象 | 版本变动 | 最近变更 |
|---|---|---|---|---|
CREATE DATABASE | CREATE | DATABASE | 142 次 | |
| 创建一个新数据库 | 现存 | |||
ALTER DATABASE | ALTER | DATABASE | 141 次 | |
| 更改一个数据库 | 现存 | |||
DROP DATABASE | DROP | DATABASE | 131 次 | |
| 移除一个数据库 | 现存 | |||
CREATE SCHEMA | CREATE | SCHEMA | 141 次 | |
| 定义一个新模式 | 现存 | |||
ALTER SCHEMA | ALTER | SCHEMA | 141 次 | |
| 更改一个模式的定义 | 现存 | |||
DROP SCHEMA | DROP | SCHEMA | — | |
| 移除一个模式 | 现存 | |||
CREATE TABLESPACE | CREATE | TABLESPACE | 141 次 | |
| 定义一个新表空间 | 现存 | |||
ALTER TABLESPACE | ALTER | TABLESPACE | 141 次 | |
| 更改一个表空间的定义 | 现存 | |||
DROP TABLESPACE | DROP | TABLESPACE | — | |
| 移除一个表空间 | 现存 | |||