javascript - 如何使用 uuid 作为 postgres 的默认 ID?
问题描述
在关于删除 mongodb 的公告之后,目前正在迁移到 postgres,只是注意到 ID 只是数字并且自动递增。
我努力了:
- 将默认 ID 设置为带有生命周期挂钩的 UUID - 无效
- 安装书架-uuid
有人知道怎么做吗?我非常不希望我的帖子的 ID 是一个自动递增的数字。
解决方案
自动递增的 id 和 uuid 通常是一个不同的概念。对于 uuids 作为主键,通常使用随机值。由于值的范围很大,重复几乎是不可能的。
您可以定义一个自动生成的 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 …
);
gen_random_uuid()
使用 Postgres 13,不再需要创建用于使用的 pgcrypto 扩展。
推荐阅读
- react-native - 为什么当 android build apk 方向改变时 Flatlist 不能正确渲染?
- c# - 如何修复 System.IndexOutOfRangeException:找不到表 0 ASP.NET
- android - Activity 保存的 android:support:fragments 越来越大并导致 TransactionTooLargeException
- python - 无法使用提供层参数的 ssm client.put_parameter()
- c - 无法弄清楚如何使用 OpenCL 在 GPU 而不是 CPU 上编译内核代码
- r - 将其他项目添加到 blogdown 学术主题网站
- angular - 如何使用 Angular-plotly.js 添加 mapbox 访问令牌
- python - 如何将 HTML 文件从我的 python 推送回网页
- reactjs - 反应,导航到不同页面时从错误中恢复
- javascript - 更改函数内部的全局变量,以更改 setInterval 的第二个参数