pg_attribute #
目录 pg_attribute 存储关于表列的信息。
数据库中每张表的每一列都恰好有一条
pg_attribute 行。(索引也有属性条目,
实际上,所有拥有
pg_class
条目的对象都有。)
术语属性(attribute)与列(column)同义,使用该术语是出于历史原因。
Table 52.7. \1 字段列说明
Column Type Description |
|---|
本列所属的表 |
The column name |
该列的数据类型(对于被删除的列为零) |
本列类型的 |
列的编号。普通列从 1 开始向上编号。
系统列(如 |
|
如果该列是数组类型,则为维数;否则为 0。 (目前并不强制数组的维数, 因此任何非零值实际上都表示“它是一个数组”。) |
本列类型的 |
本列类型的 |
通常是该列类型 |
该列当前的压缩方法。通常这是 |
本列具有一个(可能无效的)非空约束。 |
该列具有默认表达式或生成表达式,此时在
|
该列有一个值,当该列完全从行中缺失时使用它,
这发生在行已创建之后又以非易变的 |
如果是一个零字节( |
如果是一个零字节( |
该列已被删除且不再有效。被删除的列在表中仍然物理存在, 但会被解析器忽略,因此无法通过 SQL 访问。 |
该列是在此关系中本地定义的。注意,一列可以同时是本地定义并被继承的。 |
该列拥有的直接祖先的个数。祖先数非零的列不能被删除,也不能被重命名。 |
该列定义的排序规则;如果该列不是可排序数据类型,则为零 |
|
列级访问特权(如果在本列上专门授予了特权) |
属性级选项,以 “keyword=value” 字符串的形式 |
属性级的外部数据包装器选项,以 “keyword=value” 字符串的形式 |
该列拥有一个单元素数组,其中包含当该列完全从行中缺失时使用的值,
这发生在行已创建之后又以非易变的 |
在被删除列的 pg_attribute 条目中,
atttypid 会被重置为零,
但 attlen 以及从
pg_type
复制的其他字段仍然有效。这种安排是为了应对被删除列的数据类型
后来也被删除、因而不再有对应 pg_type 行的情况。
attlen 及其他字段仍可用于解释表的行内容。