数据库管理系统中的模式代表一套用于规范/处理数据库的规则。它是一种逻辑结构,包含各种数据库对象,如视图、表、索引、序列等。在Postgres中,“public”是一个默认模式。因此,默认情况下,Postgres 用户可以访问“公开”模式并在其中创建对象,如视图、表格等。
然而,SET SEARCH_PATH命令允许用户将任何其他模式设置为默认模式。本文演示了如何使用以下方法在Postgres中更改模式:
- 方法一:更改用户当前会话的模式
- 方法二:永久更改默认模式
方法1:更改用户当前会话的模式
本节仅给出当前会话的步骤操作,用于更改模式:
步骤1:检查当前/默认模式
执行以下提供的命令来检查当前/默认模式:
SHOW SEARCH_PATH;

上面的摘要显示默认模式是“公开”的。
步骤2:更改默认模式
现在执行“\dn”命令查看可用的模式:
\dn

假设我们想将“示例”模式设置为默认模式。为此,请使用“SET SEARCH_PATH”命令,如下:
SET SEARCH_PATH = example;

输出中的“SET”消息表示所选模式已被设置为默认模式。
步骤3:确认当前模式
您可以使用以下命令验证当前会话的默认模式:
SHOW SEARCH_PATH;

“示例”模式被设置为默认模式。不过,它将仅作为当前会话的默认模式。当前会话结束后,默认模式将重置为“公开”模式。
方法二:永久更改默认模式
本节描述永久更改默认模式的以下方面:
- 在数据库层
面更改模式- 在用户层面更改模式
如何在数据库层面永久更改默认模式?
要在数据库层面更改默认模式,使用“ALTER DATABASE”命令配合“SET SEARCH_PATH”子句:
ALTER DATABASE db_name SET search_path TO schema_name;
把“db_name”和“schema_name”替换成你选择的数据库和模式名称。
步骤1:连接数据库
首先,使用“\l”命令查看可用的数据库:
\l

让我们建立一个名为“sample_db”的数据库连接:
\c sample_db;

步骤2:检查当前的模式
执行以下提供的命令,检查所选数据库的当前/默认模式:
SHOW SEARCH_PATH;

要将“public”模式在数据库层面更改为“示例”模式,将使用“ALTER DATABASE”命令如下:
ALTER DATABASE sample_db SET SEARCH_PATH TO example;

步骤3:确认当前模式
您可以使用以下命令检查当前的模式:
SHOW SEARCH_PATH;

现在,每当你与“sample_db”数据库建立连接时,该数据库的默认模式将是“示例”。
如何在用户层面永久更改默认模式?
要在用户/角色层更改默认模式,使用“ALTER USER”或“ALTER ROLE”命令,配合“SET SEARCH_PATH”子句:
ALTER ROLE|USER role_name SET search_path TO schema_name;
请指定用户名和模式名,代替“role_name”和“schema_name”。
步骤1:当前默认模式
我们目前以默认模式为“public”的“postgres”用户登录,如下片段所示:
步骤2:在用户层面永久更改默认模式
要在用户层面将“public”模式更改为“示例”模式,将使用“ALTER USER”命令如下:
ALTER USER postgres SET SEARCH_PATH TO example;

步骤3:确认当前模式
要验证当前模式,请使用以下命令:
SHOW SEARCH_PATH;

现在,每当你以“postgres”用户身份登录时,默认的模式会是“示例”。
结论
在PostgreSQL中,“SET SEARCH_PATH”命令用于临时更改模式。要在数据库层或用户拉杆上永久更改模式,分别使用“ALTER DATABASE”和“ALTER USER”命令配合“SET SEARCH_PATH”命令。这篇文章提供了如何在Postgres中更改默认模式的逐步指南。
转载处:How Do I Set/Change the Default Schema in PostgreSQL — CommandPrompt Inc.
浙公网安备 33010602011771号