Проблемы в кешировании внутреннего SQLITE rowid в Android - PullRequest
0 голосов
/ 03 апреля 2012

Я работаю над приложением Android 2.3.3, которое использует SQLITE в качестве базы данных. В настоящее время я использую внутренний ROWID в sqlite для обновления моего строк и извлечения данных. Недавно я обнаружил, что внутренний ROWID время от времени изменяется для моих строк. Я не знаю причину этого. Проблема в том, что я кэширую этот ROWID, чтобы позже выполнить операцию обновления. Так что в случае, если Изменения ROWID. Возможно, я обновляю не ту строку.

Я думаю, что есть два решения для этого.

(1) Предотвратить изменение внутреннего ROWID (который я не знаю, как его достичь). Также может кто-нибудь сообщить мне, что является причиной изменения ROWID?

(2) Определите столбец INTEGER PRIMARY KEY и используйте его в качестве ROWID.

Дайте мне знать, если возможно предотвратить изменение rowid, иначе я приму второе решение.

Спасибо!

Ответы [ 2 ]

1 голос
/ 03 апреля 2012

Вы должны использовать INTEGER PRIMARY KEY для идентификатора строки.

Можете ли вы опубликовать определение таблицы, которую вы используете сейчас? Используемое вами значение не должно изменяться, если а) вы не меняете его или б) вы не определили его каким-то странным образом.

0 голосов
/ 04 апреля 2012

Я предполагаю, что в вашем приложении есть процесс, который сжимает БД (вакуум), и это может изменить rowid, если есть удаления до того, как этот компресс выполнит

...