【发布时间】:2015-11-22 02:43:39
【问题描述】:
如果我的表需要字母数字随机字符串作为其主键,我该如何实现?
如果我们只能在后端系统而不是数据库系统中实现这一点,如何保证随机字符串在表中是唯一的?
算法会是这样吗?
- 生成随机字符串
- 查询数据库并检查字符串是否已经存在
- 如果不存在,则在表中插入一行
- 如果存在,重新生成一个随机字符串,并再次检查,直到该字符串唯一为止
我主要是问如何在数据库系统中生成随机字符串,而不是一般的随机字符串。
【问题讨论】:
-
你检查过mysql的uuid()函数吗?
-
随机值可以根据定义发生冲突。字符范围越大,字符串越长,发生冲突的可能性就越小,但如果你想 100% 确定,你仍然需要检查它之前是否没有使用过。一个更好的解决方案是使用自动递增的值,MySQL 已经为您提供了开箱即用的值。它会让你的问题变得毫无意义。