PostgreSQL 9.0.4 中文文档 | ||||
---|---|---|---|---|
Prev | Fast Backward | Chapter 45. 系统表 | Fast Forward | Next |
pg_attribute表存储关于表的字段的信息。数据库里每个表的每个字段都在pg_attribute里有一行。 还有用于索引,以及所有在pg_class里有记录的对象。
术语属性等效于列/字段,使用它是历史原因。
Table 45-7. pg_attribute Columns
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
attrelid | oid | pg_class.oid | 此字段所属的表 |
attname | name | 字段名 | |
atttypid | oid | pg_type.oid | 这个字段的数据类型 |
attstattarget | int4 | attstattarget控制ANALYZE为这个字段积累的统计细节的级别。ANALYZE。零值表示不收集统计信息。 负数表示使用系统缺省的统计对象。正数值的确切信息是和数据类型相关的。 对于标量数据类型,attstattarget 既是要收集的"最常用数值"的目标数目, 也是要创建的柱状图的目标数量。 | |
attlen | int2 | 本字段类型的pg_type.typlen的副本 | |
attnum | int2 | 字段数目。普通字段是从1开始计数的。系统字段(比如oid)有(任意)负数。 | |
attndims | int4 | 如果该字段是数组,那么是维数,否则是0。(目前,一个数组的维数并未强制, 因此任何非零值都表示"这是一个数组")。 | |
attcacheoff | int4 | 在磁盘上的时候总是-1,但是如果加载入内存中的行描述器中,它可能会被更新以缓冲在行中字段的偏移量。 | |
atttypmod | int4 | atttypmod 记录创建新表时支持的类型特定的数据(比如一个varchar字段的最大长度)。 它传递给类型相关的输入和长度转换函数当做第三个参数。 其值对那些不需要atttypmod的类型通常为-1。 | |
attbyval | bool | 这个字段类型的pg_type.typbyval的副本。 | |
attstorage | char | 这个字段的类型的pg_type.typstorage的副本。对于可压缩的数据类型(TOAST), 这个字段可以在字段创建之后改变,以便于控制存储策略。 | |
attalign | char | 这个字段类型的pg_type.typalign的副本。 | |
attnotnull | bool | 这代表一个非空约束。可以改变这个字段来打开或者关闭这个约束。 | |
atthasdef | bool | 这个字段有一个缺省值,此时它对应pg_attrdef表里实际定义此值的记录。 | |
attisdropped | bool | 已经删除了这个字段,不再有效。一个已经删除的字段物理上仍然存在表中, 但会被分析器忽略,因此不能再通过SQL访问。 | |
attislocal | bool | 这个字段是局部定义在关系中的。请注意一个字段可以同时是局部定义和继承的。 | |
attinhcount | int4 | 这个字段所拥有的直接祖先的个数。如果一个字段的祖先个数非零,那么它就不能被删除或重命名。 | |
attacl | aclitem[] | 列级访问权限 如果有任何特别授权在列上。 | |
attoptions | text[] | 属性级别选项,如"keyword=value"字符串 |
在一个已删除字段的pg_attribute记录里,atttypid将被重置为零, 但是attlen和其它从pg_type拷贝的仍然有效。这么安排是为了对付后来删除的字段的数据类型也删除的情况, 因为这个时候不再有pg_type行了。attlen和其它字段可以用于解析表中一行内容。