Перейти к основному содержимому

pg_attribute

В каталоге pg_attribute хранится информация о столбцах таблицы. Для каждого столбца в каждой таблице в базе данных будет ровно одна строка pg_attribute. (Также будут записи атрибутов для индексов и всех объектов с классом pg_class entries).

Термин атрибут эквивалентен столбцу и используется по историческим причинам.

СтолбецТип данныхОписание
attrelidoid (ссылается на pg_class.oid)Таблица, к которой относится этот столбец
attnamenameимя столбца
atttypidoid (ссылается на pg_type.oid)Тип данных этого столбца (ноль для удаленного столбца)
attlenint2Копия pg_type.typlen типа этого столбца
attnumint2Номер столбца. Обычные столбцы нумеруются от 1 до. Системные столбцы, такие как ctid, имеют (произвольные) отрицательные числа
attcacheoffint4Всегда -1 в хранилище, но при загрузке в дескриптор строки в памяти это может быть обновлено, чтобы кэшировать смещение атрибута в строке
atttypmodint4atttypmod записывает типоспецифические данные, предоставляемые во время создания таблицы (например, максимальную длину столбца varchar). Он передается в типоспецифические функции ввода и функции принуждения к длине. Значение обычно равно -1 для типов, которым не нужен atttypmod
attndimsint2Количество размеров, если столбец является типом массива; в противном случае 0. (В настоящее время количество размеров массива не применяется, поэтому любое ненулевое значение фактически означает "это массив")
AttbyvalboolКопия pg_type.typbyval типа этого столбца
ataligncharКопия pg_type.typalign типа этого столбца
attstoragecharОбычно это копия pg_type.typstorage типа этого столбца. Для типов данных, поддерживающих TOAST, это можно изменить после создания столбца для управления политикой хранения
attcompressioncharТекущий метод сжатия столбца. Обычно это '\0', чтобы указать использование текущего настройки по умолчанию (см. default_toast_compression). В противном случае 'p' выбирает сжатие pglz, а 'l' выбирает сжатие LZ4. Однако это поле игнорируется, когда attstorage не позволяет сжатие
attnotnullboolЭто представляет собой ограничение не-нуля
AtthasdefboolВ этом столбце есть выражение по умолчанию или выражение генерации, в этом случае в каталоге pg_attrdef будет соответствующая запись, которая фактически определяет выражение. (Проверьте, является ли это выражением по умолчанию или генерацией expression.)
atthasmissingboolЭтот столбец имеет значение, которое используется, когда столбец полностью отсутствует в строке, как это происходит, когда столбец добавляется с энергонезависимым значением DEFAULT после создания строки. Фактическое используемое значение сохраняется в столбце attmissingval
attidentitycharесли нулевой байт (''), то не столбец идентификации. В противном случае a = всегда генерируется, d = генерируется по умолчанию
attgeneratedcharесли нулевой байт (''), то не сгенерированный столбец. В противном случае s = сохраняется. (Другие значения могут быть добавлены в future.)
attisdroppedboolЭтот столбец был удален и больше не действителен. Удаленный столбец все еще физически присутствует в таблице, но игнорируется анализатором и поэтому не может быть доступен через SQL
attislocalboolЭтот столбец определяется локально в отношении. Обратите внимание, что столбец может быть определен локально и унаследован одновременно
attinhcountint4Количество прямых предков в этом столбце. Столбец с ненулевым числом предков не может быть удален или переименован
attstattargetint4attstattarget управляет уровнем детализации статистики, накапливаемой для этого столбца с помощью ANALYZE. Нулевое значение указывает на то, что статистика не должна собираться. Отрицательное значение говорит об использовании целевого показателя статистики по умолчанию в системе. Точное значение положительных значений зависит от типа данных. Для скалярных типов данных attstattarget является и целевым числом «наиболее распространенных значений», которые нужно собирать, и целевым числом гистограммных контейнеров, которые нужно создать
attcollationoid (ссылается на pg_collation.oid)Определенное сопоставление столбца или ноль, если столбец не является сопоставимым типом данных
ataclaclitem[]Права доступа на уровне столбцов, если таковые были предоставлены специально для этого столбца
атрибутыtext[]Параметры на уровне атрибутов, такие как строки «ключевое слово=значение»
attfdwoptionstext[]Параметры адаптера сторонних данных на уровне атрибутов, такие как строки «ключевое слово = значение»
attmissingvalanyarrayВ этом столбце есть массив из одного элемента, содержащий значение, используемое, когда столбец полностью отсутствует в строке, как это происходит, когда столбец добавляется с энергонезависимым значением DEFAULT после создания строки. Значение используется только тогда, когда atthasmissing равен true. Если нет значения, столбец равен нулю

В записи атрибута pg_attribute удаленного столбца atttypid сбрасывается до нуля, но attlen и другие поля, скопированные из pg_type, все еще действительны. Такое расположение необходимо, чтобы справиться с ситуацией, когда тип данных удаленного столбца был позже удален, и поэтому строка pg_type больше не существует. attlen и другие поля могут использоваться для интерпретации содержимого строки таблицы.