2013-03-28 2 views
0

나는 Food라는 이름의 mysql 테이블을 가지고있다. 나는 그것에 560 행을 가지고 ID 열은 모든 행에 대해 null로 설정됩니다. ID-s에 대해 임의의 10 길이의 고유 한 문자열을 생성하려고합니다. 어떻게하면됩니까?기존 데이터베이스에 고유 ID를 생성하려면 어떻게해야합니까?

+0

는이 게시물이 당신을 위해 작동 할 수 있습니다 생각 : http://stackoverflow.com/questions/7163275/how-to-add-an-identity-column-to-an-existing-database-table- 큰 마비가있는 – Jean

답변

0

가장 간단한 것은 고유성을 보장하는 고유 한 색인과 임의의 char을 생성하는 함수를 만드는 것입니다. 중복으로 인해 삽입이 실패하면 다시 시도하십시오.

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; 
관련 문제