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 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
特权(注意超级用户自动拥有所有这些特权)。
剩下的形式更改用于一个 PostgreSQL 数据库的运行时配置变量的会话默认值。接下来只要一个新的会话在该数据库中开始,指定的值就会成为该会话的默认值。数据库相关的默认值会覆盖出现在postgresql.conf
中或者从postgres
命令行接收到的设置。只有超级用户可以更改一个数据库的会话默认值。一些变量不能用这种方式设置。
-
name
要被修改属性的数据库名称。
-
allowconn
如果为假,则没有人能连接到这个数据库。
-
connlimit
与这个数据库可以建立多少个并发连接。-1 表示没有限制。
-
istemplate
如果为真,则任何具有
CREATEDB
特权的用户都可以从这个数据库进行克隆。如果为假,则只有超级用户可以克隆它。 -
new_name
数据库的新名称。
-
new_owner
数据库的新拥有者。
-
configuration_parameter
value
将这个数据库的指定配置参数的会话默认值设置为给定值。如果*
value
*是DEFAULT
,或者等效地使用了RESET
,数据库相关的设置会被移除,因此系统范围的默认设置将会在新会话中继承。使用RESET ALL
可清除所有数据库相关的设置。SET FROM CURRENT
会保存该会话的当前参数值作为数据库相关的值。
ALTER DATABASE
不能在一个事务块内被执行。
也可以把一个会话的默认值绑定到一个特定角色而不是一个数据库,见 ALTER ROLE。如果有冲突,角色相关的设置会覆盖数据库相关的值。
要在数据库test
中默认禁用索引扫描:
ALTER DATABASE test SET enable_indexscan TO off;
ALTER DATABASE
语句是一个 PostgreSQL 扩展。