【发布时间】:2010-09-02 14:31:05
【问题描述】:
我有一个 iPhone 应用程序,我的一个用户发现我的应用程序存在一个非常奇怪的问题。我无法重现该问题,也无法弄清楚它为什么会发生。也许你可以?
在 Sqlite 中,我有一个大约 1000 行的表,每行都有一个唯一的 ID。但是由于某种原因,该表的 id 已经重新启动,之前它是 1000 左右,但现在它从 80 左右重新启动。因此,每次用户插入新行时,新分配的 id 大约从 80 开始,我得到两个应该是唯一的重复 id,是的,你可以理解这个问题。我查看了对该表执行任何操作的所有查询,但没有一个可以做到这一点。我总是依赖自动分配 id 的内置机制。
你见过这样的事吗?
表的架构如下所示:
CREATE TABLE mytable(
id INTEGER PRIMARY KEY
);
如您所见,我不使用 AUTOINCREMENT。但是据我了解,即使用户删除了 id 为 80 的行,也可以提供一个新插入的行 id 80,但现在它不像现在这样工作,即使我已经有行,数据库也只会不断增加 id相同的身份证。它不应该像这样工作吗:
HIGHEST ROWID IS 1000, ALL IDS FROM 0-1000 ARE TAKEN
USER DELETES ROW WITH ID 80
INSERT A NEW ROW
THE ID OF THE INSERTED ROW MIGHT NOW BE 80
SETS THE ID OF THE INSERTED ROW TO 80
INSERT A NEW ROW
THE ID OF THE INSERTED ROW CAN NOT BE 81 AS THIS IS ALREADY TAKEN
SETS THE ID OF THE INSERTED ROW TO 1001
这不应该是这样的吗?
【问题讨论】:
-
这些id是你生成的,还是sqlite生成的?
-
它们是由 sqlite 生成的,我用有关架构的一些信息来更新问题。
-
你的插入查询是什么样的?
-
真的很简单,就像:INSERT INTO mytable (field1, field2) VALUES (value1, value2)
标签: sqlite