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