ฉันได้สร้างตาราง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
รวม schema reference
& ผู้ใช้postgres
มีสิทธิ์ทั้งหมดใน schema reference
และตารางทั้งหมดใน schema ตาม:
GRANT ALL ON ALL TABLES IN SCHEMA reference TO postgres;
เพียงชี้แจงฉันมีสองdonor
ตาราง แต่พวกเขาอยู่ในสอง schemas ที่แตกต่างกันเช่น, และoecd.donor
reference.donor
(ฉันสามารถเห็นoecd.donor
ไม่มีปัญหาใด ๆ เมื่อฉันใช้\dt(+)
ภายใน psql)
search_path
ครั้งแรกและโดยที่ฉันไม่รู้ชื่อตาราง / สคีล่วงหน้า? หรือฉันดีกว่าการสอบถามinformation schema
เช่น:SELECT table_schema, table_name FROM information_schema.tables ORDER BY table_schema, table_name;
?