gpt4 book ai didi

postgresql - 如何生成没有破折号的uuid

转载 作者:行者123 更新时间:2023-12-03 15:30:49 25 4
gpt4 key购买 nike

我正在创建一个具有以下表定义的表

CREATE TABLE auth(
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
role VARCHAR(64)
);

生成的 uuid 格式为 a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11我知道 postgres 也接受不带连字符的 uuid。我们如何指定自动生成的 uuid 中没有连字符?

最佳答案

这是一个可行的解决方案,可以实现与您要求的接近的目标:

CREATE TABLE foo (
ts TIMESTAMP WITH TIME ZONE,
uuid VARCHAR DEFAULT REPLACE(uuid_generate_v4()::text, '-', '' )
);

INSERT INTO foo ( ts ) VALUES ( now() );

但是(它是 大但 )在这里我们转换 uuidstring这意味着索引本身将比数字或真实 uuid 贵得多。 .

在这篇文章中,您可以找到一个很好的解释:
https://tomharrisonjr.com/uuid-or-guid-as-primary-keys-be-careful-7b2aa3dcb439

据我所知,Postgres 的 uuid即使您尝试删除它们,也会使用连字符:
CREATE TABLE foo (
ts TIMESTAMP WITH TIME ZONE,
queue UUID DEFAULT REPLACE(uuid_generate_v4()::text, '-', '' )::uuid,
);

INSERT INTO foo ( ts ) VALUES ( now() );

上面的例子在 Postgres 9.6 中工作得很好,但是当我们转换回 uuid 时连字符被添加回来。

关于postgresql - 如何生成没有破折号的uuid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40724649/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com