2016-06-11 3 views
1

Допустим, у меня есть таблица, например.Создайте уникальный номер в автоинкрементном шаблоне 6-8 mysql

id | memberName | memberPhoneNumber | prefix | suffix 

Я хочу, чтобы генерировать префикс и суффикс в качестве составного ключа, который должен быть в 6-8 рисунка. Мой первичный ключ по-прежнему остается id. Эти два столбца используются в качестве ссылочного номера, например.

Prefix-Suffix 
000000-00000000 
000000-00000001 
000000-00000002 
... 
000000-99999999 
000001-00000000 
000001-00000001 
000001-00000002 
... 
567889-48329484 

И так далее. В идеале это будет автоматически увеличиваться. Каков наилучший способ сделать это? Сначала я делал это через промежуточную таблицу, в которой я бы заполнил число, которое я создал через функцию для 8-го шаблона, а затем автоматически увеличивал префикс 6 шаблонов за пределами базы данных на основе количества промежуточной таблицы, в которой я хранили используемые числа, а затем усечение его для полоскания/повтора, но я хочу более простое автоинкрементное решение. Это возможно?

Я занимаюсь чтением составных клавиш, но поскольку у меня уже есть первичный ключ, который отличается и не используется, я не уверен, как это сделать за пределами моего текущего метода.

Любые мысли?

ответ

0

Ваш шаблон префикса-суффикса эквивалентен нормальному целочисленному первичному ключу.

Представьте, что у вас была длина суффикса одной цифры (вместо восьми в вашем примере). Это упростит объяснение.

prefix | suffix | key 
000000 | 0  | 0 
000000 | 1  | 1 
000000 | 2  | 2 
... 
000000 | 9  | 9 
000001 | 0  | 10 
000001 | 1  | 11 

Как вы можете видеть, мы можем перечислить всех комбинаций префикса суффиксов и присвоить каждую из целого числа.

Более того, учитывая, что число, можно получить сочетание префикса суффикса, которому он соответствует:

key 57 = suffix 7, prefix 5 
key 99 = suffix 9, prefix 9 

Если бы мы работали с 8-значными суффиксами, на самом деле ничего не меняется. Формулы остаются suffix = key % (MAX_PREFIX + 1)%, являющимся оператором модуля или «остатка») и prefix = (key - suffix)/(MAX_PREFIX + 1).

Что я рекомендую делать, это просто использовать обычный первичный ключ с автоматическим инкрементом, а затем выводить из него префиксы/суффиксы, как я показал выше. Если вы действительно хотите, чтобы эти производные столбцы хранились в вашей базе данных, вы можете сделать это с помощью триггера ON INSERT, который заполняет эти столбцы.

Если вы не можете использовать первичный ключ, просто используйте обычный порядковый номер. Важным моментом является то, что вам не нужно беспокоиться о «двух значениях»; здесь есть только одна последовательность, независимо от того, как вы ее разворачиваете для отображения.

 Смежные вопросы

  • Нет связанных вопросов^_^