删除后自动增加主键会发生什么?

Mat*_*att 5 sqlite android

我正在尝试使用对象和子对象创建数据库文件.例如,

第一个表是用于存储变化的罐子.每个jar条目都有一个自动增量主ID键和有关jar的数据,如高度,直径等等.

第二张表将包含硬币.每个硬币都有一个ID(需要?),还有它所包含的罐子的ID和它的数据(如价值,年份等).

我的问题是当一个被删除时自动增量键会发生什么?说你有4个罐子:

1 2 3 4

你删除了2号.剩下的罐子会重新编号为123吗?还是会有差距?如果有间隙,是否填充,以便创建的下一个jar的ID为2?或者下一个仍然是5?

谢谢

Mat*_*lis 8

您可以在sqlite AUTOINCREMENT文档中阅读:

通常的算法是为新创建的行提供一个ROWID,该ROWID比插入前表中的最大ROWID大一个.如果表最初为空,则使用ROWID为1.如果最大的ROWID等于最大可能的整数(9223372036854775807),则数据库引擎随机开始随机选择正候选ROWID,直到找到之前未使用过的ROWID.如果在合理的尝试次数后找不到未使用的ROWID,则插入操作将失败,并显示SQLITE_FULL错误.

简而言之,插入4行后,删除第二行,然后在末尾插入另一行,ids将是:

1 3 4 5