0

我正在尝试删除 sqlite 中的记录。我有四个记录记录 1、记录 2、记录 3、记录 4,其中 id 作为主键。

所以它会为我插入的每条记录自动增加。现在当我删除记录 3 时,主键没有递减。如何根据我要删除的记录来减少 id。

当我从数据库中删除记录 3 时,我希望 id 为 1、2、3。现在是 1,2,4。是否有任何 sql 查询来更改它。我试过这个

DELETE FROM TABLE_NAME WHERE name = ?

注意:我在 xcode 中实现

4

2 回答 2

1

自动增量的意义始终是创建一个新的唯一 ID,而不是填补删除记录造成的空白。

编辑

您可以通过特殊的桌子设计来达到它。没有已删除的记录,但有一个字段“del”标记为已删除。

例如,使用“ select ... where del> 0”将查找所有活动记录。

或者放置没有“位置”的所有记录,则 ID 不受影响。使用“if del = 0 continue”循环遍历数组。因此,数组总是按连续顺序排列。

它非常灵活。根据选择...你得到。

  • 所有活动记录
  • 所有删除的记录
  • 所有记录
于 2012-06-10T07:56:35.140 回答
1

我不知道你为什么想要这个,但我建议保留这些 ID。将 ID 设置为 1、2、4 有什么问题?如果您在其他地方使用这些 ID 值作为外键,您也可能会破坏事物(参照完整性)。

另请参阅此页面以更好地了解自动增量字段的工作原理 http://sqlite.org/autoinc.html

于 2012-06-10T07:56:42.103 回答