Если я пытаюсь вставить данные с 20-значным первичным ключом в базу данных SQLite, я получаю сообщение об ошибке со вторым оператором вставки, потому что он «не уникален». Если я выберу значения, я вижу в подсказке команды SQLite, что первичный ключ записан в научной нотации. Тип столбца - десятичный. Есть ли способ заставить SQLite вставлять значения «как они», сохраняя точность / «нормальное представление» даже с такими длинными значениями?
Огромные (20 цифр) первичные ключи и SQLite
Ответы (3)
вставьте его как «строку», а не как число.
person
Community
schedule
14.10.2008
Что ж, мне пришлось определить столбец как ТЕКСТ и вставить указанные значения. Я думаю, это из-за сродства типов SQLite
- person tobsen; 15.10.2008
Стив, это так холодно. Я должен помнить об этом.
- person Anders Eurenius; 15.10.2008
поле первичного ключа должно быть целым числом, наибольшее значение - 9223372036854775807. используйте отдельное (индексированное) поле и вставьте значение как строку.
person
Javier
schedule
14.10.2008
Нет требования, чтобы первичный ключ был целым числом в SQLite. Rowid - это 64-битное целое число, но это совсем другое дело. Первичный ключ может быть любым типом данных. Подробнее см. Здесь: sqlite.org/autoinc.html
- person Mihai Limbășan; 15.10.2008
Странно, звучит так, будто ваша обертка помещает число как плавающее. Я думал, что DECIMAL внутренне сопоставлен с целым числом. Использование строки будет работать, но может быть медленным при индексации строки, а не int.
person
Community
schedule
23.12.2008
DECIMAL имеет числовое сродство. Это означает, что может быть сохранен любой тип данных, но строки преобразуются в INTEGER или REAL, если это возможно. OP, вероятно, объявил столбец
INTEGER PRIMARY KEY, который действительно требует 64-битного целого числа со знаком.
- person dan04; 31.07.2010