Postgres: показать унаследованные поля - PullRequest
3 голосов
/ 07 февраля 2012

Какой запрос я должен реализовать, чтобы получить унаследованные столбцы?Прочитав этот исчерпывающий пост, не нашел решения.

1 Ответ

4 голосов
/ 07 февраля 2012

Если я правильно понимаю, вы хотите знать имена столбцов, которые являются частью наследования между таблицами.

SELECT nmsp_parent.nspname    AS parent_schema,
       parent.relname         AS parent_table,
       nmsp_child.nspname     AS child_schema,
       child.relname          AS child_table,           
       column_parent.attname  AS column_parent_name
FROM pg_inherits
JOIN pg_class parent            ON pg_inherits.inhparent  = parent.oid
JOIN pg_class child             ON pg_inherits.inhrelid   = child.oid
JOIN pg_namespace nmsp_parent   ON nmsp_parent.oid        = parent.relnamespace
JOIN pg_namespace nmsp_child    ON nmsp_child.oid         = child.relnamespace
JOIN pg_attribute column_parent ON column_parent.attrelid = parent.oid
WHERE column_parent.attnum > 0
AND column_parent.attname NOT ILIKE '%pg.dropped%';

В этом запросе отображается имя столбца, являющегося частью иерархии.Я надеюсь, что вы служите

...