PostgreSQL 有一個 ALTER DATABASE 語句,用於修改現有數據庫。數據庫的函數一旦創建就可以使用 ALTER DATABASE 語句進行更改。
用法: ALTER DATABASE target_database action;
正如上麵的語法所描述的,在 ALTER DATABASE 語句之後提到要進行修改的數據庫,然後是要對數據庫執行的操作。
以下是 PostgreSQL 允許的操作列表:
重命名數據庫:
ALTER DATABASE RENAME TO 語句用於重命名數據庫,如下所示:
ALTER DATABASE target_database RENAME TO new_database;
更改數據庫所有者:
ALTER DATABASE OWNER TO 語句用於更改數據庫的所有者,如下所示:
ALTER DATABASE target_database OWNER TO new_owner;
需要注意的是,隻有超級用戶或數據庫所有者才能執行此操作。
更改表空間的數據庫:
ALTER DATABASE SET TABLESPACE 語句用於更改數據庫的默認表空間,如下所示:
ALTER DATABASE target_database SET TABLESPACE new_tablespace;
該語句將表和索引從舊表空間移動到新表空間。
更改運行時配置變量的會話默認值:
默認情況下,PostgreSQL 從 postgresql.conf 文件加載配置變量。此文件包含有關數據庫角色及其各自的身份驗證散列類型的信息。可以使用 ALTER DATABASE SET 語句編輯這些設置或信息,如下所示:
ALTER DATABASE target_database SET config_data = value;
請務必注意,隻有超級用戶或數據庫所有者才能更改數據庫的默認會話變量。
現在,讓我們看一下 ALTER DATABASE 語句的實現示例。
例:
讓我們以 Postgres 用戶身份登錄並使用以下命令創建一個示例數據庫(例如 my_test_db):
CREATE DATABASE my_test_db;
現在使用以下命令將數據庫從 “my_test_db” 重命名為“my_renamed_db”:
ALTER DATABASE my_test_db RENAME TO my_renamed_db;
現在執行以下語句將 “my_renamed_db” 數據庫的所有者從 “postgres” 更改為 “geeks”,假設 “geeks” 角色已經存在。
ALTER DATABASE my_renamed_db OWNER TO geeks;
如果 “geeks” 角色不存在,請使用以下語句創建它:
CREATE ROLE geeks VALID UNTIL 'infinity';
現在將 my_renamed_db 的默認表空間從 pg_default 更改為 geeks_default,假設 geeks_defaulttablespace 已經存在。
ALTER DATABASE my_renamed_db SET TABLESPACE geeks_default;
如果 geeks_defaulttablespace 不存在,您可以使用以下語句創建它:
CREATE TABLESPACE geeks_default OWNER geeks LOCATION E'C:\\pgdata\\geeks';
現在使用以下命令將 escape_string_warning 配置變量設置為關閉:
ALTER DATABASE my_renamed_db SET escape_string_warning TO off;
相關用法
- PostgreSQL ALTER TABLE用法及代碼示例
- PostgreSQL ALTER SCHEMA用法及代碼示例
- PostgreSQL ALTER TRIGGER用法及代碼示例
- PostgreSQL ALTER ROLE用法及代碼示例
- PostgreSQL ALTER TABLESPACE用法及代碼示例
- PostgreSQL DROP DATABASE用法及代碼示例
注:本文由純淨天空篩選整理自RajuKumar19大神的英文原創作品 PostgreSQL – ALTER DATABASE。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。