Postgres има друг начин за съхраняване на информация за системното съдържание. Това се нарича Системни каталози .
Във Firebird вашата заявка основно връща ред за всяка колона на таблица във всяка схема с допълнителна колона Integer, която се съпоставя с тип данни на поле.
В Postgres с помощта на системни таблици в pg_catalog
schema нещо подобно може да се постигне с помощта на тази заявка:
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
Горната заявка също връща системни каталози. Ако искате да изключите за тях трябва да добавите друг JOIN към pg_namespace
и клауза where с pg_namespace.nspname <> 'pg_catalog'
, защото това е схемата, в която се съхраняват системните каталози.
Ако също искате да видите имена на типове данни вместо представителните им номера, добавете JOIN към pg_type
.
Информационна схема се състои от колекция от изгледи. В повечето случаи не се нуждаете от цялата SQL заявка, която стои зад изгледа, така че използването на системни таблици ще ви даде по-добра производителност. Можете обаче да прегледате дефиницията на изгледи, само за да започнете с таблиците и условията, използвани за формиране на изход.