我按照以下方式donor
在模式reference
中创建了表:
CREATE TABLE reference.donor (
donor_code smallint PRIMARY KEY,
donor_name character varying NOT NULL,
donor_type smallint REFERENCES reference.donor_type (type_id),
alpha_2_code char(2) REFERENCES reference.iso_3166_1 (alpha_2_code)
);
我已经按照以下方式填充了表格:
INSERT INTO reference.donor (donor_code, donor_name, donor_type, alpha_2_code)
SELECT donor_code, donor_name, donor_type, alpha_2_code
FROM reference.donor_template;
当我运行时:
\dt+ reference.*
在 psql 里面我看到了reference.donor
表格:
List of relations
Schema | Name | Type | Owner | Size | Description
-----------+----------------+-------+----------+-------+-------------
reference | donor | table | postgres | 16 kB |
reference | donor_template | table | postgres | 16 kB |
reference | donor_type | table | postgres | 16 kB |
reference | iso_3166_1 | table | postgres | 48 kB |
(4 rows)
但是当我运行\dt+ donor*
(或\dt(+)
)时,我看不到reference.donor
表格:
List of relations
Schema | Name | Type | Owner | Size | Description
-----------+----------------+-------+----------+-------+-------------
oecd_cl | donor | table | postgres | 16 kB |
reference | donor_template | table | postgres | 16 kB |
reference | donor_type | table | postgres | 16 kB |
(3 rows)
为什么我只有在运行or时才能看到reference.donor
表格?
我期待(或)显示它,但它没有。\dt+ reference.*
\dt+ *.donor
\dt
\dt+
我的search_path
包括架构reference
和用户对架构和架构中的所有表postgres
具有所有权限,如下所示:reference
GRANT ALL ON ALL TABLES IN SCHEMA reference TO postgres;
澄清一下,我有两个donor
表,但它们位于两个不同的模式中,即oecd.donor
& reference.donor
。(当我在 psql 中使用时,我可以看到oecd.donor
没有任何问题)。\dt(+)
psql 上的文档解释说:
大胆强调我的。
显然,您的搜索路径
oecd_cl
中有before 。将此用于您的目的:reference
你会得到:
第一个命令有效,因为所有列出的表在其架构中都有“引用”。第二个命令对“捐赠者”的作用相同。因此关系“reference.iso_3166_1”的名称中没有任何“捐助者”。如果你想列出 iso_3166_1 然后试试
参考:http ://www.postgresql.org/docs/current/static/app-psql.html#APP-PSQL-PATTERNS