9.3 9.4 9.5 9.6 10 11 12 13 14 Current(15)
阿里云PostgreSQL 问题报告 纠错本页面

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权限(请注意超级用户自动拥有所有这些权限)。

第四种形式更改数据库的默认表空间。只有数据库拥有者或超级用户能够这样做, 你还必须对新表空间具有创建特权。 这个命令会在物理上移动位于该数据库旧的默认表空间中的任何表或索引到新的表空间中。 对于此数据库,新的默认表空间必须为空,并且没有人可以连接到该数据库。 注意在非默认表空间中的表和索引不受影响。

剩下的形式为PostgreSQL 数据库修改运行时配置变量的会话默认值。接下来只要一个新的会话在该数据库中开始, 指定的值就会成为该会话的默认值。数据库相关的默认值会覆盖在 postgresql.conf中出现或者从postgres 命令行接收到的设置。只有数据库拥有者或超级用户可以更改一个数据库的会话默认值。 一些变量不能用这种方式设置或者只能由超级用户设置。

参数

name

要被修改属性的数据库名称。

allowconn

如果为假则没有人可以连接到该数据库。

connlimit

与这个数据库可以建立多少个并发连接。-1 表示没有限制。

istemplate

如果为真,则此数据库可以被任何具有CREATEDB权限的用户拷贝; 如果为假,则只有超级用户或该数据库的所有者可以对其拷贝。

new_name

数据库的新名称。

new_owner

数据库的新拥有者。

new_tablespace

数据库的新默认表空间。

configuration_parameter
value

将这个数据库的指定配置参数的会话默认值设置为给定值。如果 valueDEFAULT, 或者等效地使用了RESET,数据库相关的设置会被移除, 因此在新会话中将会继承系统范围的默认设置。使用RESET ALL 可清除所有数据库相关的设置。SET FROM CURRENT 会保存该会话的当前参数值作为数据库相关的值。

更多关于允许的参数名称和值的信息可参考SET第 18 章

注意

也可以把一个会话的默认值绑定到一个特定角色而不是一个数据库, 见ALTER ROLE。如果存在冲突,角色相关的设置会覆盖数据库相关的设置。

例子

要在数据库test中默认禁用索引扫描:

ALTER DATABASE test SET enable_indexscan TO off;

兼容性

ALTER DATABASE语句是一个PostgreSQL扩展。

参见

CREATE DATABASE, DROP DATABASE, SET, CREATE TABLESPACE
<
/BODY >