Если Heroku запускает ClearDB в качестве слоя MySQL, первичные ключи автоматически увеличиваются кратно 10. Так, например, первая вставка может быть 4, затем 14, 24, 34 и т. д. Я полностью принимаю их аргументацию, так что это не так. проблема.
Мой вопрос в том, как вы справляетесь с этим в своем коде. Например, допустим, у меня есть таблица status
, состоящая из 4 строк,
id | name
1 | Active
2 | Retired
3 | Banned
4 | Awaiting Mod
И затем в моем приложении я использую:
if($status['id'] == 1){
//do something
}else{
// do something else
}
Очевидно, что это сломается из-за того, как увеличиваются PK. Как лучше всего справляться с такими ситуациями? Я не могу, например, проверить 14, так как нечего сказать, что стратегия нумерации не изменится на 12, 22, 32 и т. д.
Должен ли я проверять по имени, например, if($status['name'] == 'Active')
, или я должен добавить новый столбец в таблицу с требуемыми int
s? Я знаю, что запросы с помощью int
в SQL намного быстрее, чем с помощью string
.
Итак, каков обычный способ справиться с этим?