我们如何自动生成具有字母值的id?

时间:2011-01-10 08:21:50

标签: php mysql

我们如何创建一个表格,我们将autoid与字母值一起使用,例如 Ref00000001

3 个答案:

答案 0 :(得分: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;

就是这样!

答案 1 :(得分:0)

MySQL不支持自动生成此类ID。仅支持整数auto_increment ids。

您可以使用触发器执行此操作,但如果同时执行多个插入,则不可靠。

最后但并非最不重要的是,由于性能原因,应避免使用主键的字符串列(特别是在InnoDB表中)。

答案 2 :(得分:0)

使用标准AUTO_INCREMENT字段简单地在MySQL中生成ID的数字部分,然后在PHP中的输出上添加“Ref”组件可能是个好主意。

作为一点建议,你可能想要创建一个单一的规范函数(“makeRef”或类似函数),这样只能通过单个函数执行此活动,因此如果是这样,将来很容易修改必需的。

就MySQL而言,您可能还想使用ZEROFILL选项将数值填充到一定长度,尽管我个人几乎习惯于使用PHP str_pad在上述“makeRef”函数中处理这个问题。使用pad_type参数的STR_PAD_LEFT选项运行。