如何在现有数据库中生成唯一ID?

时间:2013-03-28 21:43:34

标签: mysql sql

我有一个名为Food的mysql表。我有560行,所有行的ID列都设置为null。我想为ID-s生成随机的10个长度唯一字符串。 我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

最简单的方法是创建一个函数来生成随机字符和唯一索引以保证唯一性,如果插入因重复而失败,请再试一次。

CREATE FUNCTION random_char() RETURNS CHAR(1)
RETURN ELT(FLOOR(1 + (RAND() * 62)), 
    'a','b','c','d','e','f','g','h','i','j','k','l','m',
    'n','o','p','q','r','s','t','u','v','w','x','y','z',
    'A','B','C','D','E','F','G','H','I','J','K','L','M',
    'N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
    '0','1','2','3','4','5','6','7','8','9');

CREATE UNIQUE INDEX id_ux ON test (id);

UPDATE test 
SET id=CONCAT(random_char(), random_char(), random_char(), random_char(),
              random_char(), random_char(), random_char(), random_char(),
              random_char(), random_char())
WHERE id IS NULL;

DROP INDEX id_ux on test;