I have this:
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)
);
But this doesn't work, it creates the schema fine but then creates the table in a weird place where it can't be viewed (with \d+
for example), in fact, the only way I know it exists is if you try to drop the "lab1" schema it will throw an error saying that schema is being used by lab1.
I tried setting the default path to the lab1 schema: ALTER ROLE -myusername- SET SEARCH_PATH to Lab1;
But that didn't work either, \d+
still has "persons" in public.
So, how do I get this table into the schema I want? Thanks.
tried runnig:
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 |
As you can see the table is created in lab1 schema. If you want it in Lab1
schema, you should modify your 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 |