2015-11-22 20 views
0

如果我的表需要使用字母数字随机字符串作为其主键,那我该如何实现这一点?如何为数据库表中的主键生成随机字符串

如果我们只能在后台系统而不是数据库系统中实现这个功能,我们如何保证随机字符串在表中是唯一的呢?

算法看起来像这样吗?

  1. 生成一个随机字符串
  2. 查询数据库,并检查是否字符串已经存在
  3. 如果不存在,插入一行到表
  4. 如果存在,重新生成一个随机字符串,再次检查,直到字符串是唯一的

我主要是问如何在数据库系统中生成随机字符串,而不是一般的随机字符串。

+1

你检查过mysql的uuid()函数吗? – Shadow

+3

请参阅http://stackoverflow.com/questions/1846202/php-how-to-generate-a-random-unique-alphanumeric-string **或** http://stackoverflow.com/questions/48124/generating-伪随机字母数字字符串**或** http://stackoverflow.com/questions/2799495/generate-unique-random-alphanumeric-characters-that-are-7-characters-long **或** .. 。 – Sean

+0

随机值可以按照定义进行碰撞。角色范围越大,字符串越长,碰撞的可能性就越小,但如果要100%确定,您仍然必须检查之前没有使用过它。更好的解决方案是使用自动递增的值,MySQL已经为您提供了开箱即用的功能。它会使你的问题没有意义。 –

回答