0

我正在开发一个使用SQLITE作为 DB 的 android 2.3.3 应用程序。我目前正在使用sqlite中的内部ROWID来更新我的行并检索数据。我最近发现我的行的内部 ROWID 有时会发生变化。我不知道这是什么原因。问题是我正在缓存这个 ROWID 以便稍后执行更新操作。所以如果 ROWID 发生变化,我可能会更新错误的行。

我认为有两种解决方案。

(1)防止内部ROWID发生变化(我不知道如何实现)。还有人可以让我知道是什么导致了这个ROWID变化吗?

(2) 定义一个 INTEGER PRIMARY KEY 列并将其用作 ROWID。

让我知道是否可以阻止 rowid 更改,否则我将采用第二种解决方案。

谢谢!

4

2 回答 2

1

您应该使用 INTEGER PRIMARY KEY 作为行 ID。

您可以发布您现在使用的表定义吗?你使用的值不应该改变,除非a)你正在改变它或b)你以某种奇怪的方式定义它。

于 2012-04-03T19:02:31.527 回答
0

我猜你的应用程序中有一个过程,它压缩数据库(真空),如果在压缩执行之前有删除,这可能会改变 rowid

于 2012-04-04T05:08:43.207 回答