当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


PostgreSQL ALTER DATABASE用法及代码示例


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; 

相关用法


注:本文由纯净天空筛选整理自RajuKumar19大神的英文原创作品 PostgreSQL – ALTER DATABASE。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。