假设我最初构建一个包含10行的表。所以最后的id(主键列)的值是9还是10?现在假设我删除了行号。 5和8(假设行计数从1开始)并添加另一行,以便现在总共有9行。现在每行中id的值会发生什么。?
db.delete(DBAdapter.TableName, "Id=? AND QstnrId=? AND QstnId=?",
new String[] { Id.toString(), QuestionnaireId, QuestionId });
答案 0 :(得分:5)
前面行的id值将保持不变...
对于新的,它将从10/11开始......
所以id列表如下:1 2 3 4 6 7 9 10 11 12,....
as in every other SQL Database
答案 1 :(得分:3)
SQLite中的自动增量主键列使用的值大于表中使用过的最大值:
如果列的类型为INTEGER PRIMARY KEY AUTOINCREMENT,则使用稍微不同的ROWID选择算法。 为新行选择的ROWID至少比同一个表中以前存在的最大ROWID大一个。如果表之前从未包含任何数据,则使用ROWID为1 。如果该表先前保留了具有最大可能ROWID的行,则不允许新的INSERT,并且任何插入新行的尝试都将失败,并出现SQLITE_FULL错误。
因此,删除行对生成的下一个ID没有影响。
注意:对于非主键,它仅使用当前最大ID的值。
此外,删除行不会更改另一行的值,因此如果您有ID 1,2,3,4并删除ID为1的行,则其余行仍将具有ID&#39 ; s 2,3,4。自动增量只是一种使插入更容易的方法。
答案 2 :(得分:1)
旧的ID值不会受到影响。