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)