我们如何创建一个表格,我们将autoid与字母值一起使用,例如 Ref00000001 ?
答案 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选项运行。