将记录从表中删除后,最大行数将减少,因为行ID持续递增

时间:2013-02-08 10:13:47

标签: sqlite

这可能是一个初学者的问题,但是在测试我的sqlite数据库时,我发现当我删除一行时,当我插入一个新行时,行id不断递增,并且不会重用例如a的行id删除了一行。那么,如果行id达到最大值,而表中的行数较少,会发生什么?

2 个答案:

答案 0 :(得分:3)

这是documented

  

如果该表先前保留了具有最大可能ROWID的行,则不允许新的INSERT,并且任何插入新行的尝试都将失败,并出现SQLITE_FULL错误。

如果省略AUTOINCREMENT关键字,ID仍会自动增量,但如果删除最后一行或值超出,则可以重复使用:

  

如果最大的ROWID等于最大可能的整数(9223372036854775807),则数据库引擎会开始随机选择正候选ROWID,直到找到以前未使用过的ROWID为止。

答案 1 :(得分:0)

当您将行号添加为自动增量时,您必须检查最大值。如果数据行达到该限制,则必须使用更大的数据类型。但通常整数不会交叉,因为数据库设计者必须关注normalization

如果数据行如此之大。你真的陷入了疑问。这需要很长时间。 SQLite主要用于低端设备。他们不太能处理大数据。