【发布时间】:2015-06-15 23:06:47
【问题描述】:
我需要一个 16 字节的二进制数据列是唯一的。为什么 BLOB(16) 在 MySQL 和 MariaDB 中不能是唯一的,当它支持唯一的 VARCHAR 时?支持这一点但不是固定长度的字节集似乎很疯狂。此外,通过将二进制值存储在 base64 编码字符串中来浪费空间是不可接受的。那么,有什么比转换成/从两个 BIGINT 生成复合唯一索引(如果重要的话,这个 16 字节二进制不用作主键)更好的选择吗?
(另外,如果我确实使用了两个 BIGINT,INSERT IGNORE 是否会像使用非复合索引一样在复合唯一索引上重复插入时静默失败?这对我来说很重要,因为我需要在这种情况下重复的 16 字节插入尝试静默失败加上从后续 LAST_INSERT_ID() 返回 0。)
【问题讨论】:
-
你试过 binary 还是 varbinary?
-
Workbench 不允许我将 BINARY 设置为 Unique。
标签: mysql blob biginteger mariadb