跳转到主要内容
MySQL 将 UUID 存储为文本,或存储为需要您手动转换的 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。请改用上面 的某个函数生成该值。

另请参阅