我有这个:
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+
公共场合仍然有“人”。
那么,如何将此表放入我想要的模式中?谢谢。
尝试跑步:
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 |
您可以在创建表之前运行它
SET search_path TO myschema;