PostgreSQL

PostgreSQL: Запрос на получение списка комментариев к колонкам таблицы

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

Организовать это можно через комментарий к полю. Задать его можно через интерфейс pgAdmin, в свойствах поля:

Или прописать в скрипте:

[pastacode lang=»sql» manual=»COMMENT%20ON%20COLUMN%20public.products.product_id%0A%20%20%20%20IS%20’%D0%9A%D0%BE%D0%BC%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%80%D0%B8%D0%B9’%3B» message=»Добавление комментария к колонке» highlight=»» provider=»manual»/]

Допустим, комментарии ко всем колонкам прописаны. Как их теперь получить запросом, чтоб красивенько вывести таблицу на форме?

[pastacode lang=»sql» manual=»select%20subq.attname%3A%3Atext%2C%20d.description%0A%09FROM%20%0A%09%09(SELECT%20c.relname%2C%20obj_description(c.oid)%20obj_description%2C%20a.attname%2C%20c.oid%2C%20a.attnum%0A%09%09FROM%20pg_class%20c%2C%20pg_attribute%20a%0A%09%09WHERE%20c.oid%20%3D%20a.attrelid%0A%09%09AND%20c.relname%20in%20(‘products’)%0A%09%09AND%20a.attnum%20%3E%200)%20subq%20%0A%09LEFT%20OUTER%20JOIN%20pg_description%20d%20ON%20(d.objsubid%20%3D%20subq.attnum%20AND%20d.objoid%20%3D%20subq.oid)%0A%09where%20subq.attname%20not%20ilike%20’%25pg.dropped%25’%3B» message=»Имена колонок таблицы products и комментарии к ним» highlight=»6″ provider=»manual»/]

В скобках в выделенной строке можно перечислить несколько таблиц через запятую. Условие после WHERE нужно для того, чтобы в результате запроса не фигурировали строки, оставшиеся после удаленных колонок таблицы. Вот такие: