更新时间:2025-12-30 GMT+08:00
分享

PG_ATTRIBUTE

PG_ATTRIBUTE系统表存储关于表字段的信息。

表1 PG_ATTRIBUTE字段

名称

类型

描述

attrelid

oid

该字段所属的表。

attname

name

字段名。

atttypid

oid

字段类型。

attstattarget

integer

控制ANALYZE为该字段设置的统计信息采样大小。

  • -1,表示未设置,使用全局参数default_statistics_target的值(默认值为100)计算采样大小。
  • 0,表示该列不进行采样。
  • 大于0,表示使用固定值计算采样大小,该值 * 300作为随机抽样的大小。例如,设置为200时,采样大小为200* 300。
  • 小于-1,表示使用百分比方式计算采样大小, 采样率=(attstattarget + 1) * (-1) /100。

对于标量数据类型,ATTSTATTARGET既是要收集的“最常用数值”的目标数目,也是要创建的柱状图的目标数量。

attlen

smallint

是本字段类型pg_type.typlen的复制。

attnum

smallint

字段编号。

attndims

integer

如果该字段是数组,该值表示数组的维数,否则是0 。

attcacheoff

integer

在磁盘上总是-1 ,但是如果加载入内存中的行描述器中,它可能会被更新为缓冲在行中字段的偏移量。

atttypmod

integer

记录创建新表时支持的类型特定的数据(比如,varchar字段的最大长度)。它传递给类型相关的输入和长度转换函数当做第三个参数。其值对那些不需要ATTTYPMOD的类型通常为-1。

attbyval

boolean

pg_type.typbyval字段值的复制。

attstorage

"char"

pg_type.typstorage字段值的复制。

attalign

"char"

pg_type.typalign字段值的复制。

attnotnull

boolean

代表一个非空约束。可以改变这个字段来打开或者关闭该约束。

atthasdef

boolean

该字段是否存在缺省值,此时它对应pg_attrdef表里实际定义此值的记录。

attisdropped

boolean

该字段是否已经被删除,不再有效。如果被删除,该字段物理上仍然存在表中,但会被分析器忽略,因此不能再通过SQL访问。

attislocal

boolean

该字段是否局部定义在对象中。一个字段可以同时是局部定义和继承的。

attcmprmode

tinyint

对某一列指定压缩方式。压缩方式包括:

  • ATT_CMPR_NOCOMPRESS
  • ATT_CMPR_DELTA
  • ATT_CMPR_DICTIONARY
  • ATT_CMPR_PREFIX
  • ATT_CMPR_NUMSTR

attinhcount

integer

该字段所拥有的直接父表的个数。如果一个字段的父表个数非零,则它就不能被删除或重命名。

attcollation

oid

对此列定义的校对列。

attacl

aclitem[]

列级访问权限控制。

attoptions

text[]

属性级可选项。

attfdwoptions

text[]

属性级外数据选项。

attinitdefval

bytea

存储了此列默认的值表达式。行存表的ADD COLUMN需要使用此字段。

attkvtype

tinyint

该字段的kv_type属性。取值如下:

  • 0,表示默认值,用于非时序表。
  • 1,表示维度属性(TSTAG),仅用于时序表。
  • 2,表示指标属性(TSFIELD),仅用于时序表。
  • 3,时间属性(TSTIME),仅用于时序表。

应用示例

查询指定表中包含的字段名和字段编号。t1和public分别替换为实际的表名和schema名称。

1
2
3
4
5
6
7
SELECT attname,attnum FROM pg_attribute WHERE attrelid=(SELECT pg_class.oid FROM pg_class JOIN pg_namespace ON relnamespace=pg_namespace.oid WHERE relname='t1' and nspname='public') and attnum>0; 
     attname      | attnum
------------------+--------
 product_id       |      1
 product_name     |      2
 product_quantity |      3
(3 rows)

相关文档