Можно ли установить начальную точку и максимальное значение для автоинкремента в MySQL? - PullRequest
0 голосов
/ 20 ноября 2010

Я создаю веб-приложение, которое содержит 4 важных идентификатора

и для ускорения определения того, какой автоматически увеличенный идентификатор предназначен для чего

Я надеялся установить ограничения на число, увеличенное с помощью autp.

пример:

orderid = 10000000, поэтому будет генерироваться число в диапазоне от 10 м до 19999999

паллетид = 20000000 20 м - 29999999

productid = 30000000 30 м -39999999

и когда эти идентификаторы достигнут предела, начнут ли они повторно использовать старые доступные номера?

Ответы [ 3 ]

1 голос
/ 20 ноября 2010

Это не то, как работают автоинкрементные столбцы.

Конечно, вы, вероятно, можете установить начальную точку, но максимум и часть о повторном использовании старых чисел, извините, не встроенных в систему.Зачем вам это нужно?

По общему мнению, если вы используете столбцы автоинкремента, вас не волнует само значение.Конечно, вы заботитесь о том, чтобы оно было уникальным, но вас не волнует, каково значение фактическое .

Итак, если вас это волнует, почему вас это волнует?Зачем вам это нужно для повторного использования старых номеров?

Вы говорите, что хотите использовать его для идентификации различных элементов в системе.Вы имеете в виду, для пользователей?Почему бы просто не использовать префикс?O123 для заказов, C123 для клиентов, P123 для продуктов и т. Д.

0 голосов
/ 20 ноября 2010

Нет, но попробуйте что-то вроде этого:

INSERT INTO table VALUES(id)
(
 Case when
 (
  SELECT id FROM table
  LIMIT COUNT(SELECT * FROM table)-1, 1) >= maximumhere
 )
then minimumhere
else MAX(SELECT id FROM table)+1
)

Это просто теоретически, поиграйте с этим ...

0 голосов
/ 20 ноября 2010

Один из способов сделать это - определить тип данных.,,например, максимальное значение крошечного int будет 127..,если вы пытались ограничиться 100 приращениями, установите начальное значение на 27.

http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html

...