0

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

4

1 回答 1

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;
于 2013-03-28T22:47:26.357 回答