프로그램/database

MySQL에서 간단하게 랜덤숫자를 구하여 PKEY로 이용

mulderu 2011. 7. 28. 01:47


DB작업을 하다보면 중복되지 않은 유일키를 만드는 작업을 하는경우가 많다.
이럴경우 아래와 같이 DB 단에서 고유키를 만들어 사용하는건 어떨까 ???
Mysql Date Conversion 함수를 잘 몰라서 replace로 삽질을 했는데
나중에 이부분을 수정 업그레이드 해야 함...


-------------------------------------------------------------------------------------------------
-- rand함수를 이용하면 무작위 실수를 리턴 받을수 있다.
-- rand()함수는 0.0 ~1.0 사이의 실수를 리턴 한다.
--------------------------------------------------------------------------------------------------- 

mysql> select concat('ID_', cast( cast( rand()*10000000 as unsigned) as char) );
+-------------------------------------------------------------------+
| concat('ID_', cast( cast( rand()*10000000 as unsigned) as char) ) |
+-------------------------------------------------------------------+
| ID_5437854                                                        |
+-------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql>

-- 이제는 현재시간을 prefix 로 하고 랜덤한 7자리 postfix를 붙여서
-- 절대(???) 중복되지 않는 유일키를 만들어 보겠습니다. 
mysql> select concat(date_format(now(), '%Y%m%d%H%i%s')
                                               , cast( cast( rand()*10000000 as unsigned) as char) )

mysql>
 
-- 아래는 실제 에디터의 테스트