Ich habe die Tabelle donor
im Schema reference
wie folgt erstellt:
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)
);
Ich habe die Tabelle wie folgt ausgefüllt:
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;
Wenn ich renne:
\dt+ reference.*
In PSQL sehe ich die reference.donor
Tabelle:
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)
Aber wenn ich renne \dt+ donor*
(oder \dt(+)
) sehe ich die reference.donor
Tabelle nicht:
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)
Warum kann ich die reference.donor
Tabelle nur sehen, wenn ich renne \dt+ reference.*
oder \dt+ *.donor
?
Ich habe erwartet \dt
(oder \dt+
), dass es angezeigt wird, aber das tut es nicht.
Meine search_path
enthält das Schema reference
und der Benutzer postgres
hat alle Berechtigungen für das Schema reference
und alle Tabellen im Schema wie folgt:
GRANT ALL ON ALL TABLES IN SCHEMA reference TO postgres;
Zur Verdeutlichung habe ich zwei donor
Tabellen, aber sie befinden sich in zwei verschiedenen Schemata, dh oecd.donor
& reference.donor
. (Ich kann oecd.donor
ohne Probleme sehen, wenn ich \dt(+)
in psql verwende).
quelle
search_path
ersten platziert ist und ohne dass ich die Tabellen- / Schemanamen im Voraus kenne ? Oder bin ich besser abzufragen dieinformation schema
zB ,:SELECT table_schema, table_name FROM information_schema.tables ORDER BY table_schema, table_name;
?\dt *.*
wie im Angebot angegeben.Der erste Befehl funktioniert, weil alle aufgelisteten Tabellen in ihrem Schema einen Verweis enthalten. Der zweite Befehl funktioniert genauso für 'donor'. Daher enthält die Beziehung "reference.iso_3166_1" keinen "Spender" im Namen. Wenn Sie iso_3166_1 auflisten möchten, versuchen Sie es einfach
Referenz: http://www.postgresql.org/docs/current/static/app-psql.html#APP-PSQL-PATTERNS
quelle
reference | donor
beim 2. Befehl nicht aufgeführt ist.\dt
(oder\dt+
) die Tabelle reference.donor nicht auflistet . Gemäß der Tabelle reference.iso_3166_1 ist alles in Ordnung.