Food という名前の mysql テーブルがあります。560 行あり、ID 列はすべての行で null に設定されています。ID のランダムな 10 の長さの一意の文字列を生成したいと考えています。どうやってやるの?
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 に答える