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