MySQL Автоматическое увеличение пользовательских значений - PullRequest
4 голосов
/ 08 марта 2011

Я пытаюсь создать столбец в базе данных mysql, который автоматически увеличивается на единицу, но идет от 0 до Z, а затем катится.

Например 000, 001, 002, ..., 009, 00A, 00B, ..., 00Z, 010, ..., 0ZZ, ..., 100.

Я бы хотел, чтобы база данных создала столбец через поле с автоинкрементом.

У меня есть следующие идеи:

  1. Создайте столбец для каждого символа, который начинается с 0-36, затем автоматически увеличивайте строку N (где N - наименее значащая цифра) на 1. Затем добавьте триггер для каждого столбца, чтобы добавить 1 к столбцу N-1, когда столбец N достигает 36.
  2. Создайте таблицу с 36 строками, в которой каждая строка содержит символ 0-Z, и извлеките соответствующий символ из таблицы с аналогичной логикой переноса из приведенного выше
  3. Создайте хранимую процедуру для выполнения соответствующей логики из элемента 1
  4. У фактической программы сгенерировать значение и вставить его в таблицу
  5. имеет регулярное значение с автоматическим приращением и вычисляет следующее значение в последовательности (это наименее оптимально, так как затрудняет анализ для пользователя, который просто просматривает базу данных)

Я надеялся, что было что-то элегантное, что позволило бы сделать это, например, встроенный механизм, чтобы сделать это, чего я просто не знаю. У меня нет знаний о хранимых процедурах / триггерах, поэтому помощь с этим будет принята с благодарностью. Я думаю, что самым простым способом было бы иметь таблицу поиска для символов, и когда строка 36 достигнута, она сбрасывается в 0, а затем происходит перенос в строку N-1.

Ответы [ 2 ]

3 голосов
/ 08 марта 2011

Исходя из ваших комментариев, я рекомендую сделать следующее:

Используйте обычный целочисленный столбец auto_increment в качестве первичного ключа для строки, а затем укажите столбец типа varchar или одного из * текстовых типов (в зависимости от версии сервера mysql и требований к хранилищу данных) для хранения вашего «идентификатора» что клиент использует.

Идентификатор может быть автоматически сгенерирован с использованием триггера.

Если вы собираетесь выполнять поиск на основе идентификатора (т. Е., Возможно, пользователь вводит идентификатор для «перехода к» записи), вам понадобится индекс для этого столбца.

2 голосов
/ 27 мая 2014

Вы можете сгенерировать пользовательские значения автоинкремента, используя хранимые процедуры, как описано в:

http://en.latindevelopers.com/ivancp/2012/custom-auto-increment-values/

Вы получите следующие ключи:Вы можете изменить хранимые процедуры для генерации вашего шаблона: 000, 001, 002, ..., 009, 00A, 00B, ..., 00Z, 010, ..., 0ZZ, ..., 100

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...