pg_attribute
#目录 pg_attribute
存储有关表列的信息。数据库中每个表中的每列将恰好有一个 pg_attribute
行。(对于索引以及确实有 pg_class
条目的所有对象,还会有属性条目。)
术语属性等同于列,由于历史原因而使用。
表 51.7. pg_attribute
列
列类型 说明 |
---|
此列所属的表 |
列名 |
此列的数据类型(对于已删除的列为零) |
此列类型的 |
列的编号。普通列从 1 开始编号。系统列(例如 |
在存储中始终为 -1,但加载到内存中的行描述符中时,该值可能会更新为缓存行中属性的偏移量 |
|
如果是数组类型,则维度数;否则为 0。(目前,不强制执行数组的维度数,因此任何非零值有效地表示 “它是一个数组”。) |
此列类型的 |
此列类型的 |
通常是此列类型的 |
列的当前压缩方法。通常为 |
表示非空约束。 |
此列具有默认表达式或生成表达式,此时在 |
此列有一个值,该值在行中完全 отсутствует 时使用,例如,在创建行后,以不可变的 |
如果是一个零字节 ( |
如果是一个零字节 ( |
此列已删除,不再有效。删除的列仍然物理存在于表中,但解析器将其忽略,因此无法通过 SQL 访问它。 |
此列在关系中本地定义。请注意,列可以同时是本地定义和继承的。 |
此列拥有的直接祖先数量。先祖数不为零的列不能被删除或重命名。 |
列的已定义排序规则,如果该列不属于可排序的数据类型,则为零。 |
|
列级访问权限,如果有任何特别授予此列的访问权限 |
属性级选项,如“关键词=值”字符串 |
属性级外来数据包装器选项,如“关键词=值”字符串 |
此列有一个包含值的单一元素数组,当该列完全缺失在行中时使用该值,例如在行创建后使用不可变 |
在已删除列的pg_attribute
条目中,atttypid
会重置为零,但attlen
和其他从pg_type
复制的字段仍然有效。需要此安排来应对已删除列的数据类型稍后被删除的情况,因此不再有pg_type
行。attlen
和其他字段可用于解释表一行的内容。