Mysql 如何在现有数据库中生成唯一的ID-s?

Mysql 如何在现有数据库中生成唯一的ID-s?,mysql,sql,Mysql,Sql,我有一张mysql表,名为Food。其中有560行,所有行的ID列都设置为null。我想为ID-s生成随机的10个长度的唯一字符串。 我该怎么做呢?最简单的方法是创建一个函数来生成一个随机字符和一个唯一索引以保证唯一性,如果插入操作由于重复而失败,请重试 CREATE FUNCTION random_char() RETURNS CHAR(1) RETURN ELT(FLOOR(1 + (RAND() * 62)), 'a','b','c','d','e','f','g','h','i

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

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

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;

我认为这篇文章可能适合你: