8.12. UUID类型

uuid数据类型用来存储RFC 4122,ISO/IEF 9834-8:2005以及相关标准定义的通用唯一标识符。 (一些系统认为这个数据类型为全球唯一标识符,)。 这个标识符是一个由特选的语法产生的128标识符。因此,对分布式系统而言,这种标识符比序列能更好的提供唯一性保证, 因为序列只能在单一数据库中保证唯一。

UUID被写成一个小写十六进制数字的序列,由分字符分成几组,特别是一组8位数字+3组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提供了存储和比较函数,但核心数据库不包括能生成UUID的函数, 因为没有单一的算法非常适合于每一个应用程序。contrib模块contrib/uuid-ossp提供了实施几个标准算法的函数。 另外,UUID可以由客户端应用或通过服务器端函数库调用而生成。