全部產品
Search
文件中心

PolarDB:ALTER DATABASE

更新時間:Jul 06, 2024

ALTER DATABASE更改一個資料庫的屬性。

簡介

ALTER DATABASE更改一個資料庫的屬性。

第一種形式更改某些針對每個資料庫的設定。只有資料庫擁有者或者超級使用者可以更改這些設定。

第二種形式更改資料庫的名稱。只有資料庫擁有者或者超級使用者可以重新命名一個資料庫,非超級使用者擁有者還必須擁有CREATEDB特權。當前資料庫不能被重新命名(如果你需要這樣做請串連到一個不同的資料庫)。

第三種形式更改資料庫的擁有者。要修改擁有者,你必須擁有該資料庫並且也是新擁有角色的一個直接或間接成員,並且你必須具有CREATEDB特權(注意超級使用者自動擁有所有這些特權)。

第四種形式更改資料庫的預設資料表空間。只有資料庫擁有者或超級使用者能夠這樣做,你還必須對新資料表空間具有建立特權。這個命令會在物理上移動位於該資料庫舊的預設資料表空間中的任何錶或索引到新的資料表空間中。新的預設資料表空間對於這個資料庫必須是空的,並且不能有人可以串連到該資料庫。在非預設資料表空間中的表和索引不受影響。

剩下的形式更改用於一個資料庫的運行時組態變數的會話預設值。接下來只要一個新的會話在該資料庫中開始,指定的值就會成為該會話的預設值。只有資料庫擁有者或超級使用者可以更改一個資料庫的會話預設值。一些變數不能用這種方式設定或者只能由超級使用者更改。

文法

    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

參數

name要被修改屬性的資料庫名稱。

allowconn如果為假,則沒有人能串連到這個資料庫。

connlimit與這個資料庫可以建立多少個並發串連。-1 表示沒有限制。

istemplate如果為真,則任何具有CREATEDB特權的使用者都可以從這個資料庫進行複製。如果為假,則只有超級使用者或者這個資料庫的擁有者可以複製它。

new_name資料庫的新名稱。

new_owner資料庫的新擁有者。

new_tablespace資料庫的新預設資料表空間。

這種形式的命令不能在事務塊內執行。

configuration_parameter value將這個資料庫的指定配置參數的會話預設值設定為給定值。如果 valueDEFAULT,或者等效地使用了RESET,資料庫相關的設定會被移除,因此系統範圍的預設設定將會在新會話中繼承。使用RESET ALL可清除所有資料庫相關的設定。SET FROM CURRENT會儲存該會話的當前參數值作為資料庫相關的值。

說明

也可以把一個會話的預設值綁定到一個特定角色而不是一個資料庫,見ALTER ROLE。如果有衝突,角色相關的設定會覆蓋資料庫相關的值。

樣本

要在資料庫test中預設禁用索引掃描:

    ALTER DATABASE test SET enable_indexscan TO off;