2025年9月25日: PostgreSQL 18 釋出!
支援的版本: 當前 (18) / 17 / 16 / 15 / 14 / 13
開發版本: devel
不支援的版本: 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3

ALTER DATABASE

ALTER DATABASE — 更改資料庫

概要

ALTER DATABASE name [ [ WITH ] option [ ... ] ]

where option can be:

    ALLOW_CONNECTIONS allowconn
    CONNECTION LIMIT connlimit
    IS_TEMPLATE istemplate

ALTER DATABASE name RENAME TO new_name

ALTER DATABASE name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }

ALTER DATABASE name SET TABLESPACE new_tablespace

ALTER DATABASE name REFRESH COLLATION VERSION

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 許可權。當前資料庫不能被重新命名。(如果需要這樣做,請連線到另一個數據庫。)

第三種形式更改資料庫的所有者。要更改所有者,您必須能夠 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_parameter
value

將此資料庫的指定配置引數的會話預設值設定為給定值。如果 valueDEFAULT 或等效地使用 RESET,則會刪除資料庫特定的設定,因此新會話將繼承系統範圍的預設設定。使用 RESET ALL 清除所有資料庫特定的設定。SET FROM CURRENT 將會話的引數當前值儲存為資料庫特定的值。

有關允許的引數名稱和值的更多資訊,請參閱 SET第 19 章

註釋

也可以將會話預設值繫結到特定角色而不是資料庫;請參閱 ALTER ROLE。如果存在衝突,角色特定的設定將覆蓋資料庫特定的設定。

示例

在資料庫 test 中預設停用索引掃描

ALTER DATABASE test SET enable_indexscan TO off;

相容性

ALTER DATABASE 語句是 PostgreSQL 的擴充套件。

提交更正

如果您在文件中發現任何不正確、與您對特定功能的體驗不符或需要進一步澄清的內容,請使用 此表單 來報告文件問題。