PostgreSQL 教程: ALTER SCHEMA 更改模式

九月 14, 2023

摘要:在本教程中,您将学习如何使用 PostgreSQL 的ALTER SCHEMA语句来修改模式的定义。

PostgreSQL ALTER SCHEMA 语句概述

ALTER SCHEMA语句允许您更改模式的定义。例如,您可以按如下方式重命名模式:

ALTER SCHEMA schema_name 
RENAME TO new_name;

在这个语法中:

  • 首先,在ALTER SCHEMA关键字后指定要重命名的模式的名称。
  • 其次,在RENAME TO关键字后指定模式的新名称。

请注意,要执行此语句,您必须是模式的所有者,并且必须具有数据库的CREATE权限。

除了重命名模式之外,ALTER SCHEMA还允许您将模式的所有者更改为新的所有者,如以下语句所示:

ALTER SCHEMA schema_name 
OWNER TO { new_owner | CURRENT_USER | SESSION_USER};

在这个语句中:

  • 首先,在ALTER SCHEMA子句中指定要更改所有者的模式的名称。
  • 其次,在OWNER TO子句中指定新的所有者。

PostgreSQL ALTER SCHEMA 语句示例

让我们看一些使用ALTER SCHEMA语句的例子来更好地理解。

请注意,以下部分中的示例基于我们在CREATE SCHEMA教程中创建的模式。

1) 使用 ALTER SCHEMA 语句重命名模式的示例

此示例使用ALTER SCHEMA语句将模式doe重命名为finance

ALTER SCHEMA doe
RENAME TO finance;

同样,以下示例将john模式重命名为accounting

ALTER SCHEMA john
RENAME TO accounting;

2) 使用 ALTER SCHEMA 语句更改模式所有者的示例

以下示例使用ALTER SCHEMA语句将模式accounting的所有者从john更改为postgres

ALTER SCHEMA finance 
OWNER TO postgres;

以下是查询用户创建的模式的语句:

SELECT * 
FROM 
    pg_catalog.pg_namespace
WHERE 
    nspacl is NULL AND
    nspname NOT LIKE 'pg_%'
ORDER BY 
    nspname;

输出是:

PostgreSQL ALTER SCHEMA - change owner example

从输出中可以清楚地看到,finance模式现在由 id 为 10 的所有者拥有,即postgres

同样,此语句将accounting模式的所有者更改为postgres

ALTER SCHEMA accounting 
OWNER TO postgres;

PostgreSQL ALTER SCHEMA - change owner example 2

在本教程中,您学习了如何使用 PostgreSQL 的ALTER SCHEMA语句重命名模式或更改模式的所有者。