35.17. columns
#
Представление columns
содержит информацию обо всех столбцах таблиц (или столбцах представлений) в базе данных. Системные столбцы (ctid
и т. д.) в нём не отображаются. В нём показываются только те столбцы, к которым имеет доступ текущий пользователь (являясь владельцем или имея некоторые права).
Таблица 35.15. Столбцы columns
Тип столбца Описание |
---|
Имя базы данных, содержащей таблицу (всегда текущая база) |
Имя схемы, содержащей таблицу |
Имя таблицы |
Имя столбца |
Порядковый номер столбца в таблице (нумерация начинается с 1) |
Выражение по умолчанию для столбца |
|
Тип данных столбца, если это встроенный тип, либо |
Если в |
Если в |
Если в |
Если в |
Если в |
Если в |
Если в |
Относится к функциональности, отсутствующей в PostgreSQL (см. поле |
Относится к функциональности, отсутствующей в PostgreSQL |
Относится к функциональности, отсутствующей в PostgreSQL |
Относится к функциональности, отсутствующей в PostgreSQL |
Имя базы данных, содержащей правило сортировки столбца (это всегда текущая база), либо NULL, если это правило по умолчанию или тип данных столбца несортируемый |
Имя схемы, содержащей правило сортировки столбца, либо NULL, если это правило по умолчанию или тип данных столбца несортируемый |
Имя правила сортировки столбца, либо NULL, если это правило по умолчанию или тип данных столбца несортируемый |
Если целевой столбец имеет тип домена, этот столбец содержит имя базы данных, в которой определён домен (всегда текущая база), иначе — NULL. |
Если целевой столбец имеет тип домена, этот столбец содержит имя схемы, в которой определён домен, иначе — NULL. |
Если целевой столбец имеет тип домена, этот столбец содержит имя домена, иначе — NULL. |
Имя базы данных, в которой определён тип (если применимо, нижележащий тип домена) столбца (всегда текущая база) |
Имя схемы, в которой определён тип (если применимо, нижележащий тип домена) столбца (всегда текущая база) |
Имя типа данных столбца (если применимо, нижележащий тип домена) |
Относится к функциональности, отсутствующей в PostgreSQL |
Относится к функциональности, отсутствующей в PostgreSQL |
Относится к функциональности, отсутствующей в PostgreSQL |
Всегда NULL, так как массивы имеют неограниченную максимальную ёмкость в PostgreSQL |
Идентификатор дескриптора типа данных столбца, уникальный среди всех дескрипторов типов, относящихся к таблице. Он в основном полезен для соединения с другими экземплярами таких идентификаторов. (Конкретный формат идентификатора не определён и не гарантируется, что он останется неизменным в будущих версиях.) |
Относится к функциональности, отсутствующей в PostgreSQL |
Если целевой столбец является столбцом идентификации, значение |
Если целевой столбец является столбцом идентификации, значение |
Если целевой столбец является столбцом идентификации, начальное значение внутренней последовательности, иначе — NULL. |
Если целевой столбец является столбцом идентификации, шаг внутренней последовательности, иначе — NULL. |
Если целевой столбец является столбцом идентификации, максимальное значение внутренней последовательности, иначе — NULL. |
Если целевой столбец является столбцом идентификации, минимальное значение внутренней последовательности, иначе — NULL. |
Если целевой столбец является столбцом идентификации, |
|
Генерирующее выражение, если целевой столбец является генерируемым, иначе — NULL. |
|
Так как типы данных могут определяться в SQL множеством способов и PostgreSQL добавляет дополнительные варианты, представление типов в информационной схеме может быть довольно сложным. Столбец data_type
предназначен для идентификации нижележащего встроенного типа столбца. В PostgreSQL это означает, что данный тип определён в схеме системного каталога pg_catalog
. Этот столбец может быть полезным, если приложение способно особым образом воспринимать встроенные типы (например, форматировать числовые типы по-другому или задействовать данные в столбцах точности). Столбцы udt_name
, udt_schema
и udt_catalog
всегда указывают на нижележащий тип данных столбца, даже если столбец основан на домене. (Так как в PostgreSQL встроенные типы не отличаются от определённых пользователем, в этом представлении выводятся и они. Это расширение стандарта SQL.) Эти столбцы должны учитываться, когда приложению нужно обрабатывать данные в зависимости от типа, так как в этом случае не важно, основан ли столбец на домене. Если столбец основан на домене, на него указывают столбцы domain_name
, domain_schema
и domain_catalog
. Если вы хотите связать столбцы с их типами данных и обработать домены как отдельные типы, вы можете записать coalesce(domain_name, udt_name)
и т. п.