Пытаясь заставить приложение на базе MySQL поддерживать MS SQL, я столкнулся со следующей проблемой:
Я сохраняю auto_increment в MySQL как целочисленные поля без знака (разных размеров), чтобы использовать полный диапазон, поскольку я знаю, что никогда не будет отрицательных значений. MS SQL не поддерживает атрибут unsigned во всех целочисленных типах, поэтому мне приходится выбирать между отсутствием половины диапазона значений или созданием обходного пути.
Одним из очень наивных подходов было бы поместить некоторый код в код абстракции базы данных или в хранимую процедуру, которая преобразует между отрицательными значениями на стороне БД и значениями из большей части диапазона без знака. Конечно, это может испортить сортировку, а также не будет работать с функцией автоматического идентификатора (или каким-то образом?).
Я не могу придумать хороший обходной путь сейчас, есть ли? Или я просто фанатик и должен просто забыть о половине диапазона?
Edit:
@ Майк Вудхаус: Да, я думаю, ты прав. В моей голове все еще звучит голос, говорящий, что, возможно, я мог бы уменьшить размер поля, если бы оптимизировал его использование. Но если нет простого способа сделать это, вероятно, не стоит об этом беспокоиться.