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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。