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
表里实际定义此值的元组.
|
|