MySQL
生成的UUID()
不唯一会发生什么?如果这是一个主键列,MySQL
会出错吗,还是会尝试生成另一个UUID()
直到找到真正唯一的?
MySQL
生成的UUID()
不唯一会发生什么?如果这是一个主键列,MySQL
会出错吗,还是会尝试生成另一个UUID()
直到找到真正唯一的?
UUID()
两次并获得相同的结果,最严重的问题就是"东西坏了"(tm)。它应该是唯一的,据我所知,它应该始终如此。也许您的意思是其他的?例如,如果您使用UUID被设计为在空间和时间上全局唯一的数字。即使这些调用是在两台未连接到彼此的计算机上执行的,两个对UUID()的调用也应该生成两个不同的值。
UUID()
生成应该是唯一的东西(如主键或唯一字段等),并且先前添加了相同的数字(例如,您调用了UUID()
一次,但插入两次),那么当将非唯一内容添加到应该是唯一的位置时,您将只会得到默认错误,而不会得到新的错误。
有关唯一性的一些阅读材料:
阅读手册,了解如何使用不同的部分生成uuid
。参考链接:http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_uuid
查看该手册中有关实际定义的链接(但这是一篇很长的文章,您可以跳过此步):https://www2.opengroup.org/ogsys/jsp/publications/PublicationDetails.jsp?catalogno=c706
这里提供了一些易于理解的重复概率指标:http://en.wikipedia.org/wiki/Universally_unique_identifier
MySQL网站(论坛等)上也有一些关于将其用作主键的讨论,但由于我在工作中时间紧迫,您需要自行搜索:)
MySQL UUID()函数是根据MAC地址、版本和时间戳确定性生成的。如果在单个服务器上有2个线程以完全相同的时间戳(精确到微秒)调用该函数,则预计会得到相同的结果。但如果只有一个线程,则由于4Ghz处理器的微秒级差异,这将不可能。