【问题标题】:composite (alphanumeric) primary key and auto increment复合(字母数字)主键和自动增量
【发布时间】:2011-09-25 10:37:29
【问题描述】:
是否可以在 MySQL 中创建一个结合了字母元素和数字的自动增量函数?
我有一个现有系统,其中包含 QAb99、QAb101、QAd9003 等键。最大数字部分的范围为 1 到 9999,而字母以 QA 开头,范围从 QAa 到 QAd 等,最终将通过 QAd9999 到QAe1等
在 SQL 中还是在 SQL 之外(即 php 脚本)管理生成新密钥更好吗?
谢谢。
【问题讨论】:
标签:
mysql
sql
primary-key
auto-increment
【解决方案1】:
MySQL 自动增量始终是数字。您可以采取以下几种方法:
您可能已经意识到,您可以将序列转换为数字并返回; 'a' 到 'z' 只是 0 到 250,000;如果你去双A,那就是260,000。你得到了 base-26 系统,乘以 10,000。
【解决方案2】:
我不久前问过这个问题。不幸的是,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;
}