如果MySQL生成的UUID()不是唯一的,会发生什么?如果这是针对作为主键的列,MySQL是否会出错,或者是否尝试生成另一个UUID,直到找到真正唯一的UUID?
发布于 2012-03-13 15:29:26
好吧,如果您调用UUID()两次并得到相同的结果,那么最有问题的事情将是“内容被破坏”(tm)。据我所知,它应该是独一无二的,而且应该一直如此。
将不会有“重新生成”代码可用:该函数被设计为即使在计算机之间也创建唯一的密钥,那么它如何知道其结果不是唯一的?
来自http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_uuid
UUID被设计为一个在空间和时间上全局唯一的数字。对UUID()的两次调用预计会生成两个不同的值,即使这些调用是在两台彼此不连接的独立计算机上执行的。
也许你指的是别的什么?例如,如果您使用UUID()生成一些应该是唯一的内容(如主键或唯一字段等),并且您以前添加了相同的数字(例如,您调用了UUID()一次,但插入了两次内容),那么当您将非唯一内容添加到一个应该是唯一的位置时,您将得到默认错误。你不会得到一个新的。
一些关于独特性的阅读材料:
发布于 2013-06-29 03:30:09
MAC UUID()基于MySQL地址、版本和时间戳。如果单个服务器上的两个线程使用相同的时间戳(完全相同的微秒)进行调用,则预期会出现相同的结果。对于单个线程,这是不可能的,因为在4 4Ghz处理器上,调用将被分隔几微秒。
https://stackoverflow.com/questions/9679860
复制相似问题