重置Android上SQLite数据库的AUTOINCREMENT



我在android中使用SQLite数据库,自动增加_ID字段,但是当我从它删除一行时,_ID有一个缺失的数字,所以它不是从1-9,它会去1,2,4,5,6,7,8,9,但我想要它做的是从1- 8!有办法做到这一点吗?很抱歉这个问题让你感到困惑,我不知道该怎么表达!

我在android中使用SQLite数据库,自动增加_ID字段,但当我从中删除一行时,_ID有一个缺失的数字所以不是从1-9开始而是1 2 4 5 6 7 8 9,但是我想让它从1到8!有办法做到这一点吗?

一个字没有。你所描述的是正常的行为。autoincrement的内部迭代器没有内存,简单地说,当一次生成id 3时,它不会再生成id 3,而是下一个数字4。如果您应该生成id 1,2,3,4,5,现在删除id为5的行,新插入的行将自动id为6而不是5。

在大多数dms中,这是正常行为。可以肯定的是,你可以实现它,当你不使用自动增量但显式地添加id和当它改变你可以提供更新的行编程,但这种方法是不可取的,也很"生病",因为在你会milion行表,你会更新所有milion行和这个操作太多time-consume特别是设备这是不好的,因为他们有有限内存和电池与某些能力。

并且正如@Areks提到的,如果你使用关系表,你也必须更新引用,这在大多数情况下是不值得的。

注意:如果你是用自己定义的对象列表填充适配器,你可以简单地从SQLite中保存row_id的引用到每个对象,然后当你想从ListView中删除行时,只需从行中获取id并将其传递到delete方法的参数

最新更新