如何将表添加到 postgreSQL 中的特定架构?

问题描述 投票:0回答:3

我有这个:

DROP SCHEMA Lab1 CASCADE;
CREATE SCHEMA Lab1;
CREATE TABLE Lab1.PERSONS(
SSN   INT primary key,
Name CHARACTER (30),
HouseId  INT,
ApartmentNumber  INT ,
Salary   DECIMAL (5, 2)  
);

但这不起作用,它可以很好地创建模式,但随后在一个无法查看的奇怪位置创建表(例如使用

\d+
),事实上,我知道它存在的唯一方法是如果您尝试删除“lab1”模式,它会抛出一个错误,指出该模式正在被 lab1 使用。

我尝试设置 lab1 模式的默认路径:

ALTER ROLE -myusername- SET SEARCH_PATH to Lab1;

但这也没用,

\d+
公共场合仍然有“人”。

那么,如何将此表放入我想要的模式中?谢谢。

sql postgresql schema
3个回答
30
投票

尝试跑步:

DROP SCHEMA Lab1 CASCADE;
CREATE SCHEMA Lab1;
CREATE TABLE Lab1.PERSONS(
SSN   INT primary key,
Name CHARACTER (30),
HouseId  INT,
ApartmentNumber  INT ,
Salary   DECIMAL (5, 2)  
);
t=# \dt+ lab1.persons
 lab1   | persons | table | postgres | 0 bytes |

如您所见,该表是在 lab1 模式中创建的。如果您希望它处于

Lab1
模式中,您应该修改您的 statemet:

t=#     DROP SCHEMA "Lab1" CASCADE;
ERROR:  schema "Lab1" does not exist
t=#     CREATE SCHEMA "Lab1";
CREATE SCHEMA
t=#     CREATE TABLE "Lab1".PERSONS(
t(#     SSN   INT primary key,
t(#     Name CHARACTER (30),
t(#     HouseId  INT,
t(#     ApartmentNumber  INT ,
t(#     Salary   DECIMAL (5, 2)
t(#     );
CREATE TABLE
t=#     \dt+ "Lab1".persons
 Lab1   | persons | table | postgres | 0 bytes |

0
投票

您可以在创建表之前运行它

SET search_path TO myschema;

-3
投票

选择数据库并右键单击,然后选择“查询工具”选项,并在其中创建一个特定模式的表

© www.soinside.com 2019 - 2024. All rights reserved.