BINARY(16)。
vsql_uuid 添加了一个真正的 uuid 列类型,它占用 16 字节,以常见的
36 字符形式显示,并按自己的比较规则排序。它还能生成版本 1、3、4、5、6 和 7,
而 MySQL 自带的 UUID() 只能生成版本 1。
安装
如果您使用安装脚本、Docker 镜像或发行版压缩包安装了 VillageSQL,vsql_uuid.veb 已经位于服务器的 lib/veb/ 目录中。
用一条语句将它安装到服务器中:
新增内容
uuid 类型
将列声明为uuid。它占用 16 字节,可以用作主键。
函数
示例
使用版本 7 标识符作为主键,这样后写入的行会排在先写入的行之后, 然后读回版本号:上面的顺序只在跨毫秒时成立。版本 7 将毫秒时间戳放在最前面,
其余部分随机填充,没有计数器,因此同一毫秒内生成的两个值
彼此之间的排序是随机的。这就是示例用两条单独的语句插入两行的原因。
需要比这更细的排序时,请使用
UUID_V6()。uuid 列接受字符串字面量,但不接受字符串表达式。因此
INSERT INTO orders VALUES ('550e8400-e29b-41d4-a716-446655440000', ...)
可以执行,而 INSERT INTO orders VALUES (UUID(), ...) 会失败并报
ERROR 3219 (HY000): Incorrect uuid value: cannot implicitly cast string expression. Use explicit conversion for column 'id' at row 1。请改用上面
的某个函数生成该值。另请参阅
- MySQL 中的 UUID — 每个版本的用途以及如何选择
- 主键策略 — UUID 键在哪些情况下有帮助,在哪些情况下有代价
- 安装扩展 —
INSTALL EXTENSION如何工作,以及服务器在哪里查找包 - 可用扩展 — 完整目录
- villagesql/vsql-uuid — 源代码、构建说明和已知限制