SQLite: первичный ключ и sqlitedatabase.insert - PullRequest
0 голосов
/ 11 января 2019

У меня есть таблица с INTEGER PRIMARY KEY. Это означает, что мой первичный ключ становится псевдонимом для rowid. Однако rowid является длинным (согласно возвращаемому значению SQLiteDatabase.insert), в то время как мой первичный ключ является целым числом. Так что же произойдет, если я вставлю данные в то время, когда в этой таблице используются все возможные целочисленные значения? Поскольку мой первичный ключ - целое число, я ожидаю ошибку. Но так как мой первичный ключ ссылается на / является псевдонимом для , rowid (который является длинным -> доступны все еще числа) SQLiteDatabase.insert может пойти дальше и вставить мои данные, возвращая rowid ... верно? Или SQLiteDatabase.insert ограничивает себя целочисленным диапазоном значений, но все равно просто возвращает long каждый раз? Если это так, не имеет ли смысла немедленно приводить возвращаемое значение SQLiteDatabase.insert к int? Потому что я так или иначе не смог бы получить "длинное значение" из этого метода (из-за целого числа моего первичного ключа) ... или я мог?

1 Ответ

0 голосов
/ 11 января 2019

От: https://www.sqlite.org/datatype3.html

INTEGER. Значение представляет собой целое число со знаком, сохраненное в 1, 2, 3, 4, 6 или 8. байт в зависимости от величины значения

Как вы можете видеть в SQLite , тип данных INTEGER отличается от типа int в Java,
но он может хранить значения до 8 байт , как и тип long Java.

...