您的位置:寻梦网首页编程乐园数据库PostgreSQL 7.2 Documentation

3.4. pg_attribute

pg_attribute 存储关于表的字段的信息.数据库里每个表的每个字段都在 pg_attribute 里有一行. (还有用于索引和其它对象的属性元组,见 pg_class .)

术语 属性 等效于 列/字段,使用它是历史原因.

Table 3-4. pg_attribute 字段

名字 类型 引用 描述
attrelid oid pg_class.oid 此列/字段所属的表
attname name   字段名字
atttypid oid pg_type.oid 这个字段的数据类型
attstattarget int4   attstattarget 控制 ANALYZE 为这个字段积累的统计细节的级别. 零值表示不收集统计信息.正数值的确切信息是数据类型相关的. 对于标量数据类型, attstattarget 既是要收集的 "最常用数值" 的目标数目,也是要创建的 柱状图的目标数量.
attlen int2   是本字段类型 pg_type . typlen 的拷贝.
attnum int2   字段数目.普通列是从 1 开始计数的.系统字段, 比如 oid , 有(任意)正数.
attndims int4   如果该字段是数组,那么是维数,否则是 0. (目前,一个数组的维数并未强制,因此任何非零值都表示 "这是一个数组" .)
attcacheoff int4   在磁盘上总是 -1,但是如果装载入内存中的元组描述器中, 它可能会被更新以缓冲在元组中字段的偏移量.
atttypmod int4   atttypmod 元组在创建表的时候 提供的类型相关的数据(比如,一个 varchar 字段的最大长度). 它传递给类型相关的输入和输出函数当做第三个参数. 其值对那些不需要 typmod 的类型而言通常为 -1.
attbyval bool   这个字段的类型的 pg_type . typbyval 的拷贝
attstorage char   这个字段的类型的 pg_type . typstorage 的拷贝
attisset bool   如果为真,这个字段是一个结果集.这种情况下,在该字段真正存储的是 在 pg_proc 表里的一条元组的 OID. pg_proc 那条元组包含定义这个结果集的查询字串. - 也就是说,那条能够返回这个结果集的查询. 所以 atttypid (见上面) 指向这个查询返回的类型,但是这个字段的实际长度是一个 oid 的长度(尺存).--- 至少理论如此. 不过这些东西现在可能已经相当残破了.
attalign char   这个字段的类型的 pg_type . typalign 的拷贝
attnotnull bool   这代表一个 NOT NULL 约束.我们可以改变这个字段以打开或者关闭这个约束.
atthasdef bool   这个字段有一个缺省值,此时它对应 pg_attrdef 表里实际定义此值的元组.