我已经按照以下方式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)
我为什么只能看到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(+))。
search_path而不管哪个模式放在最前面,而我却事先不知道表/模式名称?还是我最好查询information schema例如:SELECT table_schema, table_name FROM information_schema.tables ORDER BY table_schema, table_name;?