pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
pg_type #目录 pg_type 存储关于数据类型的信息。基本类型(标量类型)用 CREATE TYPE 创建。数据库中的每个表都会自动创建一个复合类型,以表示该表的行结构。也可以用 CREATE TYPE AS 显式创建复合类型。(还可以用 CREATE DOMAIN 在现有类型之上创建域。)
表 43.29. pg_type 列
| 名称 | 类型 | 引用 | 描述 |
|---|---|---|---|
typname |
name |
数据类型的名字 | |
typnamespace |
oid |
|
包含此类型的名字空间的OID |
typowner |
int4 |
|
类型的拥有者 |
typlen |
int2 |
对于一个固定尺寸的类型,typlen是该类型内部表示的字节数。 对于一个变长类型,typlen为负值。 -1表示一个“varlena”类型(具有长度字),-2表示一个以空值结尾的C字符串。 |
|
typbyval |
bool |
typbyval 决定内部例程按值还是按引用传递该类型的值。如果 typlen 不是 1、2 或 4(或在 Datum 为 8 字节的机器上不是 8),typbyval 最好为假。变长类型总是按引用传递。注意,即使长度允许按值传递,typbyval 也可以为假;例如 float4 类型目前就是这样。 |
|
typtype |
char |
typtype 为 b 表示基本类型,c 表示复合类型(即表的行类型),d 表示域,p 表示伪类型。另见 typrelid 和 typbasetype。 |
|
typisdefined |
bool |
如果此类型已被定义则为真,如果此类型只是一个表示还未定义类型的占位符则为假。 当typisdefined为假,除了类型名字、名字空间和OID之外什么都不能被依赖。 |
|
typdelim |
char |
在分析数组输入时,分隔两个此类型值的字符。注意该分隔符是与数组元素数据类型相关联的,而不是和数组的数据类型关联。 | |
typrelid |
oid |
|
如果这是复合类型(见 typtype),此列指向定义相应表的 pg_class 项。(对于独立的复合类型,该 pg_class 项并不真正代表一个表,但类型的 pg_attribute 项需要链接到它。)基本类型为零。 |
typelem |
oid |
|
如果 typelem 不为 0,它就标识 pg_type 中的另一行。当前类型于是可以像数组那样带下标,产生 typelem 类型的值。“真正的”数组类型是变长的(typlen = -1),但某些定长(typlen > 0)类型也有非零的 typelem,例如 name 和 oidvector。如果定长类型有 typelem,其内部表示必须是若干个 typelem 数据类型的值,不含其他数据。变长数组类型有一个由数组子例程定义的头部。 |
typinput |
regproc |
|
输入转换函数(文本格式) |
typoutput |
regproc |
|
输出转换函数(文本格式) |
typreceive |
regproc |
|
输入转换函数(二进制格式),如果没有则为零 |
typsend |
regproc |
|
输出转换函数(二进制格式),如果没有则为零 |
typalign |
char |
可能的值为:
注意对于系统表中使用的类型,关键的是在 |
|
typstorage |
char |
注意, |
|
typnotnull |
bool |
|
|
typbasetype |
oid |
|
如果这是域(见 |
typtypmod |
int4 |
域使用 |
|
typndims |
int4 |
|
|
typdefaultbin |
text |
如果 |
|
typdefault |
text |
|
译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。