2011-06-29 60 views
0

是否可以在MySQL中組合使用alpha元素和數字的自動遞增函數?複合(字母數字)主鍵和自動增量

我有一個像QAb99,QAb101,QAd9003等鍵的現有系統。最大數字部分範圍從1到9999,而字母以QA開頭,範圍從QAa到QAd等,最終將通過QAd9999到QAe1等。

是否更好地管理SQL或SQL以外的生成新密鑰(即PHP腳本)?

謝謝。

+0

可能重複的[MySQL的自動遞增的字母數字的主鍵??](http://stackoverflow.com/questions/6444355/mysql-auto-incrementing-alpha-numeric-primary-key ) –

+0

@fbas:如果您不介意使用MyISAM,則可以使用複合auto_incrementing鍵。在這個問題中看到我的答案:http://stackoverflow.com/questions/5455436/creating-primary-key-based-on-date/5455513#5455513 –

回答

0

我剛纔問過這個。不幸的是Mysql不這樣做。我很喜歡它,但它沒有。在PHP中,你可以做到這一點。例如:

public function random_id_gen($length) 
    { 
     //the characters you want in your id 
     $characters = '23456789ABCDEFGHJKLMNPQRSTUVWXYZ'; 
     $max = strlen($characters) - 1; 
     $string = ''; 

     for ($i = 0; $i < $length; $i++) { 
      $string .= $characters[mt_rand(0, $max)]; 
     } 

     return $string; 
    } 
0

MySQL自動增量總是數字。有幾個方法,你可以採取:

  • 在您的應用程序實現自己的遞增
  • 使用您的字母數字鍵觸發
  • 使用MySQL的自動增量實現自動遞增,然後讓你的應用程序將數字轉換爲字母數字以便顯示。
  • 如上所述,但使用視圖進行MySQL轉換。 (這將是單向的,因爲我不相信MySQL支持觸發器INSTEAD-OF;見http://bugs.mysql.com/bug.php?id=16525

正如你可能知道,您可以將序列轉換爲數字和後面; 'a'到'z'只是0到250,000;如果你去加倍,那就是260,000。你有26個基本系統,乘以10,000。