Postgres har en anden måde at gemme information om systemindhold på. Dette kaldes Systemkataloger .
I Firebird returnerer din forespørgsel dybest set en række for hver kolonne i en tabel i hvert skema med en ekstra heltalskolonne, der er knyttet til en feltdatatype.
I Postgres ved hjælp af systemtabeller i pg_catalog
skema noget lignende kan opnås ved hjælp af denne forespørgsel:
SELECT
TRIM(c.relname) AS table_name, TRIM(a.attname) AS column_name, a.atttypid AS field_type
FROM pg_class c
LEFT JOIN pg_attribute a ON
c.oid = a.attrelid
AND a.attnum > 0 -- only ordinary columns, without system ones
WHERE c.relkind = 'r' -- only tables
ORDER BY 1,2
Ovenstående forespørgsel returnerer også systemkataloger. Hvis du vil udelukke dem skal du tilføje endnu et JOIN til pg_namespace
og en where-klausul med pg_namespace.nspname <> 'pg_catalog'
, fordi dette er skemaet, hvor systemkataloger er gemt.
Hvis du også gerne vil se datatypenavne i stedet for deres repræsentative numre, skal du tilføje en JOIN til pg_type
.
Informationsskema består af indsamling af synspunkter. I de fleste tilfælde har du ikke brug for hele SQL-forespørgslen, der står bag visningen, så brug af systemtabeller vil give dig bedre ydeevne. Du kan dog inspicere visningsdefinitionen bare for at komme i gang med de tabeller og betingelser, der bruges til at danne et output.