Мы используем sqlite для нашего мобильного проекта, однако, когда мы пытаемся использовать переменные с длинным идентификатором в качестве автоинкремента первичного ключа, код выдает ошибку «Autoincrement is only allowed in integer primary key
». Когда я проверил в Интернете об этой ошибке, я обнаружил, что автоинкремент в sqlite не разрешен для типов bigint
.
Интересно то, что bigint
также реализуется целым числом — sqlite не имеет типа bigint
— он просто использует размер целого числа, чтобы решить, является ли оно bigint
или нет. http://www.sqlite.org/datatype3.html
Чтобы это исправить - я заменил открытый исходный код, где он создает таблицу с "bigint
" на "integer
", и написал некоторый тестовый код, чтобы убедиться, что он работает вне границ обычного целого числа (добавлен элемент с идентификатором больше, чем целое число). диапазон намеренно и постоянно добавлял еще 10 объектов).
Кажется, сейчас это работает, но я хочу знать, может ли это вызвать какие-то другие проблемы. Мы синхронизируем идентификаторы мобильных приложений с нашими идентификаторами базы данных, и поэтому у нас определенно будут идентификаторы, превышающие нормальный целочисленный диапазон.
Является ли это решение допустимым решением? К каким неприятностям это может привести?