ALTER DATABASE — 更改数据库
ALTER DATABASEname[ [ WITH ]option[ ... ] ] whereoptioncan be: 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如果为 false,则没有人可以连接到此数据库。
connlimit可以连接到此数据库的并发连接数。-1 表示无限制。
istemplate如果为 true,则任何具有 CREATEDB 权限的用户都可以克隆此数据库;如果为 false,则只有超级用户或数据库所有者可以克隆它。
new_name数据库的新名称。
new_owner数据库的新所有者。
new_tablespace数据库的新默认表空间。
此形式的命令不能在事务块内执行。
REFRESH COLLATION VERSION更新数据库的排序规则版本。有关背景信息,请参阅 Notes。
configuration_parametervalue将此数据库的指定配置参数的会话默认值设置为给定值。如果 value 为 DEFAULT 或等效地使用 RESET,则会删除数据库特定的设置,因此新会话将继承系统范围的默认设置。使用 RESET ALL 清除所有数据库特定的设置。SET FROM CURRENT 将会话的参数当前值保存为数据库特定的值。
也可以将会话默认值绑定到特定角色而不是数据库;请参阅 ALTER ROLE。如果存在冲突,角色特定的设置将覆盖数据库特定的设置。
在数据库 test 中默认禁用索引扫描
ALTER DATABASE test SET enable_indexscan TO off;
ALTER DATABASE 语句是 PostgreSQL 的扩展。