【发布时间】:2021-05-14 16:08:36
【问题描述】:
在宣布放弃 mongodb 后,目前正在迁移到 postgres,刚刚注意到 ID 只是数字并且自动递增。
我试过了:
- 将默认 ID 设置为带有生命周期挂钩的 UUID - 无效
- 安装 bookshelf-uuid
有人知道怎么做吗?我非常不希望我的帖子的 ID 是一个自动递增的数字。
【问题讨论】:
标签: javascript postgresql next.js strapi bookshelf.js
在宣布放弃 mongodb 后,目前正在迁移到 postgres,刚刚注意到 ID 只是数字并且自动递增。
我试过了:
有人知道怎么做吗?我非常不希望我的帖子的 ID 是一个自动递增的数字。
【问题讨论】:
标签: javascript postgresql next.js strapi bookshelf.js
自动递增的 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 …
);
使用 Postgres 13,不再需要创建用于使用 gen_random_uuid() 的 pgcrypto 扩展。
【讨论】: