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 值。