Установка индекса для полей перечисления - PullRequest
0 голосов
/ 04 декабря 2011

У меня есть база данных MySQL, которая в настоящее время использует поле tinyint для хранения типа записи. Он использует нечетную нумерацию, и мы находимся в процессе, чтобы изменить это. Так что в настоящее время он читает:

record type
1      60
2      62
3      60
4      61
5      63

Числа представляют тип с:

60 = car
61 = bike
62 = motorcycle

Нам нужно преобразовать это в поле enum, используя значения car, bike, motorcycle. Однако рассматриваемая таблица используется с очень большого количества страниц, где SELECT и INSERT делаются с использованием оригинальных чисел. Это будет меняться постепенно. Поэтому мне было интересно: есть ли способ изменить индексы поля enum, чтобы я мог изменить поле на enum и при этом сохранить новую запись с type = 60, и это станет 'car'? Я знаю, что есть способ установить его на 0, и он станет машиной, но ясно, что это требует от нас изменить все страницы, и на это нет времени ...

1 Ответ

3 голосов
/ 04 декабря 2011

К сожалению, это невозможно. Руководство само по себе не оставляет места для надежды:

Каждое значение перечисления имеет индекс:

• Значения из списка допустимых элементов в спецификации столбца:начиная с 1.

Поскольку вы ничего не можете с этим поделать, я должен спросить: зачем вам это сделать enum?Мне еще не приходилось сталкиваться с ситуацией, когда enum при условии любой приносил бы пользу, кроме удобства программистам, которые смотрят на результаты запроса на глаз.Какую выгоду вы хотите получить?Я не гуру, но ИМХО, независимо от того, чего вы хотите достичь, есть другой (лучший) способ, чем использование enum.

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