enf*_*ion 0 postgresql command-prompt database-schema
我正在尝试列出数据库中的所有表.\ dt没有这样做,可能是因为名称冲突.我尝试了很多命令,但是当不同模式中的两个表共享一个名称时,只有一个表被\ dt列出:
CREATE DATABASE tester;
\c tester
CREATE SCHEMA hid1;
CREATE SCHEMA hid2;
CREATE TABLE a (a int);
CREATE TABLE b (a int);
CREATE TABLE hid1.a (a int);
CREATE TABLE hid1.b (a int);
CREATE TABLE hid1.c (a int);
CREATE TABLE hid2.a (a int);
CREATE TABLE hid2.d (a int);
\dt
SET search_path TO public,hid1,hid2;
\dt
SET search_path TO hid1,public,hid2;
\dt
SET search_path TO hid2,hid1,public;
\dt
Run Code Online (Sandbox Code Playgroud)
即
tester=# \dt
List of relations
Schema | Name | Type | Owner
--------+------+-------+-------
hid1 | a | table | bob
hid1 | b | table | bob
hid1 | c | table | bob
hid2 | d | table | bob
(4 rows)
tester=# SET search_path TO hid2,hid1,public;
SET
tester=# \dt
List of relations
Schema | Name | Type | Owner
--------+------+-------+-------
hid1 | b | table | bob
hid1 | c | table | bob
hid2 | a | table | bob
hid2 | d | table | bob
(4 rows)
Run Code Online (Sandbox Code Playgroud)
看看三个表是如何被屏蔽的?我的理解是模式是命名空间.那是我出错的地方吗?我错过了什么吗?