2011-01-10 5 views

답변

0

MySQL은 이러한 ID의 자동 생성을 지원하지 않습니다. 정수 auto_increment ids 만 지원됩니다.

트리거를 사용하면이 작업을 수행 할 수 있지만 동시에 여러 번 삽입 할 경우 신뢰할 수 없습니다.

성능상의 이유로 중요한 키의 문자열 열은 피해야합니다 (특히 InnoDB 테이블에서).

0

표준 AUTO_INCREMENT 필드를 사용하여 MySQL에서 ID의 숫자 부분을 생성 한 다음 PHP의 출력에 단순히 "Ref"구성 요소를 추가하는 것이 좋습니다.

약간의 조언으로, 하나의 표준 함수 ("makeRef"또는 유사)를 작성하여이 활동이 단일 함수를 통해서만 수행되므로 나중에 수정할 수 있습니다. 그래서 필요합니다.

MySQL의 관점에서 ZEROFILL 옵션을 사용하여 숫자 값을 특정 길이로 채울 수도 있지만 개인적으로는 위의 "makeRef"함수에서 PHP의 str_pad 함수를 사용하여 pad_type 인수에 대한 STR_PAD_LEFT 옵션.

1

누군가 다른 사람이 미래에 이런 종류의 기능이 필요할 경우 작성하십시오. PHP를 사용하여이 값을 생성했습니다. 매우 간단합니다 :

$q="select reference_number from accounts order by reference_number desc LIMIT 1"; 
$result = mysql_query($q); 
$row = mysql_fetch_assoc($result); 

$new_eps=explode('REF',$row['reference_number']); //get existing highest value from DB 
$new_eps=$new_eps[1]+1; // increment by one 
$eps_string="REF"; 
$length = 8 - strlen($new_eps); //I need 8 digits for my REF number 
    for($i=0;$i<$length; $i++){ 
    $eps_string .='0'; 
    } 
    $eps_string =$eps_string.$new_eps; 

그게 전부입니다!

+0

숫자가 잘못된 순서 (예 : 8,7,6,5,4,400,400,3,2,1)로 배열에서 반환되면 "order by reference_number desc"부분을 "cast by order (replace (reference) , 'REF', '') unsigned) desc " –

관련 문제