更新时间:2024-08-20 GMT+08:00

UUID类型

UUID数据类型用来存储RFC 4122,ISO/IEF 9834-8:2005以及相关标准定义的通用唯一标识符(UUID)。这个标识符是一个由算法产生的128位标识符,确保它不可能使用相同算法在已知的模块中产生相同的标识符。

因此,对分布式系统而言,这种标识符比序列能更好的保证唯一性,因为序列只能在单一数据库中保证是唯一。

UUID是一个小写十六进制数字的序列,由连字符分成几组,一组8位数字+三组4位数字+一组12位数字,总共32个数字代表128位,标准的UUID示例如下:

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

GaussDB同样支持以其他方式输入:大写字母和数字、由花括号包围的标准格式、省略部分或所有连字符、在任意一组四位数字之后加一个连字符。示例:

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

一般是以标准格式输出。

示例

-- 生成一个UUID类型的序列号
gaussdb=# SELECT uuid();
                 uuid                 
--------------------------------------
 846b9d00-172d-c63d-4a03-e8b4700370e0
(1 row)

-- 创建表
gaussdb=# CREATE TABLE uuid_test(id int, test uuid) DISTRIBUTE BY HASH(test);

-- 插入数据,使用系统生成的uuid插入数据
gaussdb=# INSERT INTO uuid_test VALUES(1, uuid()::uuid);

-- 插入数据,使用示例格式插入数据
gaussdb=# INSERT INTO uuid_test VALUES(2, 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11');
gaussdb=# INSERT INTO uuid_test VALUES(3, '{a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11}');
gaussdb=# INSERT INTO uuid_test VALUES(4, 'a0eebc999c0b4ef8bb6d6bb9bd380a11');
gaussdb=# INSERT INTO uuid_test VALUES(5, 'a0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a11');

-- 查看数据,输出时以标准格式输出
gaussdb=# SELECT * FROM uuid_test;
 id |                 test                 
----+--------------------------------------
  1 | 1b52051c-1731-c63d-4a03-e8b4700370e0
  2 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11
  3 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11
  4 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11
  5 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11
(5 rows)

-- 删除表
gaussdb=# DROP TABLE uuid_test;