我现在正在构建一个Android手机书应用程序并使用SQLite数据库的方法来存储记录。在我的数据库中,有_id列是主键并将自动增加。奇怪的是,当我删除记录时,删除的_id号码不会被重复使用。
E.g。最初数据库是
_id name
1 Peter
2 Mary
删除2(Mary)后,当我添加新记录(John)时,我发现John的id = 3。
所以我的问题是:玛丽还在吗?它被标记为"删除"但没有真正删除?如果是这样,这会是一种记忆的浪费吗?我应该做些什么来完全删除它?
答案 0 :(得分:1)
不,删除行ID 2后,记录将被完全删除。递增计数器将从它停止的位置继续,因此看到John的id为3是正确的。
答案 1 :(得分:1)
该行已删除。生成自动增量ID是特定于实现的。自动增量算法可以分配新的ID或重用已删除的ID。请参考sqlite教程:http://sqlite.org/autoinc.html
这是上面链接中提到的引用: 使用AUTOINCREMENT,具有自动选择的ROWID的行可以保证具有以前从未在同一数据库中使用同一个表的ROWID。并且自动生成的ROWID保证单调递增。 请注意,“单调增加”并不意味着ROWID总是增加一个。一个是通常的增量。但是,如果插入因(例如)唯一性约束而失败,则失败的插入尝试的ROWID可能不会在后续插入中重用,从而导致ROWID序列中出现间隙。 AUTOINCREMENT保证自动选择的ROWID会增加,但不会保证它们是连续的。
答案 2 :(得分:0)
您需要将ID列设为INT主键并为其添加自动增量。