Postgresql 相当于这个基于 UUID 的函数
Postgresql equivalent to this UUID-based function
我正在为新项目评估 PostgreSQL,否则我们会使用 MySql。我在 MySql 中生成这些类型的 ID,这是一个翻转的 V1 GUID:
create function get_uuid() returns binary(16)
begin
return (
select unhex(concat(
substr(uuid(), 15, 4),
substr(uuid(), 10, 4),
substr(uuid(), 1, 8),
substr(uuid(), 20, 4),
substr(uuid(), 25))) as new_id
);
end;
然后我会使用 mysql hex() 和 unhex() 函数将它们转换为 to/from binary(16),以便将字段所需的存储量减半。
所有这些都记录在这里,如果你好奇的话:
https://www.percona.com/blog/2014/12/19/store-uuid-optimized-way/
但是...我正在寻找的是 Postgres 的等效函数。从今天开始,我是 100% 的新手。
Postgres 不需要这个 hack。它有一个本地数据类型 uuid
,只需要 16 个字节来存储 UUID 值。
我正在为新项目评估 PostgreSQL,否则我们会使用 MySql。我在 MySql 中生成这些类型的 ID,这是一个翻转的 V1 GUID:
create function get_uuid() returns binary(16)
begin
return (
select unhex(concat(
substr(uuid(), 15, 4),
substr(uuid(), 10, 4),
substr(uuid(), 1, 8),
substr(uuid(), 20, 4),
substr(uuid(), 25))) as new_id
);
end;
然后我会使用 mysql hex() 和 unhex() 函数将它们转换为 to/from binary(16),以便将字段所需的存储量减半。
所有这些都记录在这里,如果你好奇的话:
https://www.percona.com/blog/2014/12/19/store-uuid-optimized-way/
但是...我正在寻找的是 Postgres 的等效函数。从今天开始,我是 100% 的新手。
Postgres 不需要这个 hack。它有一个本地数据类型 uuid
,只需要 16 个字节来存储 UUID 值。