到目前为止,我得到了一些我不明白的内容,我收到了重复的条目错误消息,我正在尝试为我的主索引插入UUID_SHORT。
id列是一个整数18,UUID_SHORT是使用BEFORE_INSERT触发器生成的:
CREATE TRIGGER `TR_Documents_BI` BEFORE INSERT ON `documents`
FOR EACH ROW SET NEW.id = UUID_SHORT()
错误是
Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '2147483647' for key 'PRIMARY'
我在stackoverflow上读到我应该尝试使用BigInt存储我的数据,但结果并不像生成的第一个UUID_SHORT那样令人信服:
95161384827879440
下一个像自动增量
95161384827879440 + 1
我不知道为什么我不能将UUID_SHORT作为我的主要索引。
但是,如果我生成UUID();
,问题就不存在了有人可以帮忙吗?
编辑:无法将UUID_SHORT存储为整数,得到它!但是当我使用BigInt(18)时,我生成了以下条目: 95161384827879440, 95161384827879441, 95161384827879442, 95161384827879443, 95161384827879444
出现以下错误消息:
Warning: #1366 Incorrect integer value: '' for column 'id' at row 1
所以它仍然不是存储在我的列中的生成的UUID_SHORT():(
答案 0 :(得分:0)
您需要使用BIGINT
。 INT(18)仍为32位,不能保存18个十进制数字。
关于UUID_SHORT的唯一性,您应该检查manual。
答案 1 :(得分:0)
如@Vatev所述,使用bigint 然后作为安全网使用ON DUPLICATE .... KEY UPDATE
那应该解决您的问题:)