在数据库层面谈 UUID 的“版本控制”,其实有两层含义,要分清楚才不会混淆:
UUID 是一种标准化的格式(RFC 4122 / RFC 9562),它有多个“版本号”,不同版本生成方式不同。
| 版本 | 名称 | 说明 | 数据库使用情况 |
|---|---|---|---|
| UUID v1 | 时间 + MAC | 基于时间戳和机器 MAC | 有顺序,但泄露 MAC,不安全 |
| UUID v2 | DCE | 很少用 | 几乎不用 |
| UUID v3 | MD5 + 命名空间 | 可重复(同一输入) | 少用于主键 |
| UUID v4 | 随机 | 完全随机 | ✅ 最常见 |
| UUID v5 | SHA-1 + 命名空间 | 可重复 | 少用于主键 |
| UUID v6 / v7 / v8 | 新版本(RFC 9562) | 时间排序 + 随机 | ✅ 数据库友好 |
id UUID DEFAULT uuid_generate_v7() PRIMARY KEY
支持 UUID v7(或插件):
这指的是:用 UUID 做版本控制 / 乐观锁 / 行版本管理,而不是 UUID 本身的版本。
UPDATE user
SET name = 'Tom',
version = gen_random_uuid()
WHERE id = 1
AND version = '旧UUID';
✅ 适合:
✅ 比时间戳安全
id (业务主键)
record_id (UUID) ← 表示同一份数据
version_uuid ← 版本标识
常用于:
在分布式系统中,UUID 常被当作:
例如:
INSERT INTO order (id, payload)
VALUES ('uuid-v7', '{}')
ON CONFLICT (id) DO NOTHING;
UUID 类型,而不是 VARCHARUUID 的“版本控制”通常指:
- UUID 本身的标准版本(v4 / v7)
- 或在数据库中用 UUID 实现数据版本、乐观锁、历史追踪
如果你愿意,我可以:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。