微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 uuid 作为 postgres 的默认 ID?

如何解决如何使用 uuid 作为 postgres 的默认 ID?

在宣布放弃mongodb后正在迁移到postgres的过程中,只是注意到ID只是数字并且自动递增。

我试过了:

  1. 使用生命周期挂钩将认 ID 设置为 UUID - 无效
  2. 安装 bookshelf-uuid

有人知道怎么做吗?我非常不希望我的帖子 ID 是一个自动递增的数字。

解决方法

自动递增的 id 和 uuid 通常是一个不同的概念。对于 uuid 作为主键,通常使用随机值。由于值的范围很大,几乎不可能重复。

您可以按如下方式定义自动生成的 uuid 主键:

CREATE TABLE my_table (
    id UUID DEFAULT MD5(RANDOM()::TEXT || CLOCK_TIMESTAMP()::TEXT)::UUID PRIMARY KEY,… other column definitions …
);

pgcrypto 扩展也提供了创建随机 uuid 的功能。

CREATE EXTENSION IF NOT EXISTS pgcrypto;
CREATE TABLE my_table (
    id UUID DEFAULT gen_random_uuid() PRIMARY KEY,… other column definitions …
);

在 Postgres 13 中,不再需要为使用 gen_random_uuid() 创建 pgcrypto 扩展。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。