我在mysql的一个表中创建了一个名为guid varchar(36)的字段。在此字段中,我使用UUID()插入值。我希望这个领域与众不同。所以,我的问题是mysql的UUID()可以返回重复值吗?
感谢
答案 0 :(得分:0)
引自http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_uuid
UUID被设计为在空间和时间上全球唯一的数字。对UUID()的两次调用预计会生成两个不同的值,即使这些调用是在两个彼此没有连接的独立计算机上执行的。
但它正在返回 128 字符
答案 1 :(得分:0)
来自文档UUID被设计为在空间和时间上全球唯一的数字。由于查询是在执行之前编译的,因此您在同一时刻调用UUID()两次。因此,您不能指望它在同一查询中返回两个唯一值,因为两个值都使用相同的时间戳。这对我来说听起来像是预期的行为。
在这里查看(我也会从这里复制答案)
答案 2 :(得分:0)
假设算法在接近中途的任何地方,它看起来像是,简短的回答是 no 。
这个数字来自一个单调增加的时间戳计数器(用外行的术语表示计数器总是前进并且永远不会重复)并防止在同一时刻生成两个值,具体取决于架构,空间分量(MAC地址)或随机分量。
UUID被设计为在空间和时间上全球唯一的数字。对UUID()的两次调用预计会生成两个不同的值,即使这些调用是在两个彼此未连接的独立计算机上执行的。
答案很长,是技术上可以两次生成相同的UUID,但被陨石撞击的概率通常更大。如果数字是完全随机生成的(注意MySQL只有一部分数字可能是随机的,其他部分来自时间戳计数器),维基百科puts it nicely:
如果地球上每个人拥有6亿UUID,则一次重复的概率约为50%。
这当然有资格获得“足够好”。如果您真的非常担心,只需在列上打一个UNIQUE
约束,以获得额外的舒适感。