这可能是一个初学者的问题,但是在测试我的sqlite数据库时,我发现当我删除一行时,当我插入一个新行时,行id不断递增,并且不会重用例如a的行id删除了一行。那么,如果行id达到最大值,而表中的行数较少,会发生什么?
答案 0 :(得分:3)
这是documented:
如果该表先前保留了具有最大可能ROWID的行,则不允许新的INSERT,并且任何插入新行的尝试都将失败,并出现SQLITE_FULL错误。
如果省略AUTOINCREMENT
关键字,ID仍会自动增量,但如果删除最后一行或值超出,则可以重复使用:
如果最大的ROWID等于最大可能的整数(9223372036854775807),则数据库引擎会开始随机选择正候选ROWID,直到找到以前未使用过的ROWID为止。
答案 1 :(得分:0)
当您将行号添加为自动增量时,您必须检查最大值。如果数据行达到该限制,则必须使用更大的数据类型。但通常整数不会交叉,因为数据库设计者必须关注normalization。
如果数据行如此之大。你真的陷入了疑问。这需要很长时间。 SQLite
主要用于低端设备。他们不太能处理大数据。