本文共 960 字,大约阅读时间需要 3 分钟。
作者:瀚高PG实验室 (Highgo PG Lab)
该系统表存储所有表(包括系统表如pg_class)的字段信息。数据库中的每个表的每个字段在pg_attribute表中都有记录。
以下是pg_attribute表的字段说明:
字段名称 | 类型 | 引用 | 描述 |
---|---|---|---|
attrelid | oid | pg_class.oid | 字段所属表 |
attname | name | 字段名 | |
atttypid | oid | pg_type.oid | 字段数据类型 |
attstattarget | int4 | attstattarget控制ANALYZE的统计细节级别 | |
attlen | int2 | 字段类型长度 | |
attnum | int2 | 字段编号 | |
attndims | int4 | 如果是数组,表示维数,否则为0 | |
attcacheoff | int4 | 在磁盘上总是-1 | |
atttypmod | int4 | 数据表创建时提供的类型相关数据 | |
attbyval | bool | pg_type.typbyval字段值拷贝 | |
attstorage | char | pg_type.typstorage字段值拷贝 | |
attalign | char | pg_type.typalign字段值拷贝 | |
attnotnull | bool | 是否带有非空约束 | |
atthasdef | bool | 是否有缺省值 | |
attisdropped | bool | 字段是否已删除 | |
attislocal | bool | 字段是否局部定义 | |
attinhcount | int4 | 直接祖先个数 |
应用示例:
SELECT relname, attname, attnum FROM pg_class c, pg_attribute attr WHERE relname = 'testtable' AND c.oid = attr.attrelid;
如上查询可获取指定表的字段名和字段编号。
另一个查询示例:
SELECT relname, attname, typname FROM pg_class c, pg_attribute a, pg_type t WHERE c.relname = 'testtable' AND c.oid = a.attrelid AND a.atttypid = t.oid AND attnum > 0;
该查询用于查看用户自定义字段的类型。
转载地址:http://cvowz.baihongyu.com/