Можно ли сделать функцию автоинкремента в MySQL, которая объединяет альфа-элементы и числовые?
У меня есть существующая система с такими ключами, как QAb99, QAb101, QAd9003 и т.д. Максимальная числовая часть варьируется от 1 до 9999, тогда как буквы начинаются с QA и варьируются от QAa до QAd и т.д., и в конечном итоге будут проходить QAd9999 до QAe1 и т.д.
Лучше ли управлять генерации новых ключей в SQL или вне SQL (т.е. php script)?
спасибо.
Я спросил об этом некоторое время назад. К сожалению, 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;
}
Автоматическое добавление MySQL всегда числовое. Есть несколько подходов, которые вы могли бы предпринять:
Как вы, вероятно, понимаете, вы можете преобразовать свою последовательность в число и обратно; "a" через "z" составляют от 0 до 250 000; если вы перейдете к двойному, то 260 000. У вас есть система base-26, умноженная на 10 000.