2025年9月25日: PostgreSQL 18 发布!
支持的版本: 当前 (18) / 17 / 16 / 15 / 14 / 13
开发版本: devel
不支持的版本: 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3

8.12. UUID类型 #

数据类型 uuid 存储的是通用唯一标识符 (UUID),该标识符定义在 RFC 9562、ISO/IEC 9834-8:2005 以及相关标准中。(某些系统将此数据类型称为全局唯一标识符,或 GUID,)这是一个 128 位的值,由一种算法生成,该算法选择使得在已知宇宙中,使用相同算法的其他人生成相同标识符的可能性非常低。因此,对于分布式系统而言,这些标识符提供了比仅在单个数据库内唯一序列生成器更好的唯一性保证。

RFC 9562 定义了 8 种不同的 UUID 版本。每个版本对生成新 UUID 值都有特定的要求,并且每个版本都有其独特的优点和缺点。PostgreSQL 提供对使用 UUIDv4 和 UUIDv7 算法生成 UUID 的本地支持。或者,也可以在数据库外部使用任何算法生成 UUID 值。uuid 数据类型可以用来存储任何 UUID,无论其来源和 UUID 版本如何。

UUID 以一组由连字符分隔的小写十六进制数字序列形式书写,具体来说是:一个 8 位数字的组,后跟三个 4 位数字的组,最后是一个 12 位数字的组,总共 32 个数字代表 128 位。此标准形式的 UUID 示例为:

a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11

PostgreSQL 还接受以下替代输入格式:使用大写数字、用花括号括起标准格式、省略部分或全部连字符、在每四位数字后添加一个连字符。示例如下:

A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11
{a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11}
a0eebc999c0b4ef8bb6d6bb9bd380a11
a0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a11
{a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11}

输出始终为标准格式。

有关如何在 PostgreSQL 中生成 UUID,请参见第 9.14 节

提交更正

如果您在文档中发现任何不正确之处、与您在使用特定功能时的实际体验不符,或需要进一步说明,请使用此表单来报告文档问题。