【发布时间】:2012-08-29 05:42:57
【问题描述】:
我正在查看一段代码,我可以看到已经编写了以下代码,该代码生成了一个字符串,并且该字符串已被设置为表的主键。
return new BigInteger(UUID.randomUUID().toString().replaceAll("-", ""), 16).toString(36);
到目前为止,有很多记录,并且它们似乎是唯一的,因为没有违反主键约束。
我知道这个数字是随机的,但它是唯一的吗?
谢谢
吐槽
【问题讨论】:
-
附带问题:既然您仍然使用字符串作为主键:您为什么不使用 UUID.randomUUID().toString()?这样,数据库的其他用户就知道主键是 UUID。
-
引自维基百科 (en.wikipedia.org/wiki/Universally_unique_identifier) > 换句话说,只有在接下来的 100 年每秒生成 10 亿个 UUID 之后,仅创建一个副本的概率约为 50%。跨度>
-
我忘了提到代码已经到位并且正在生产中并且到目前为止运行良好。