这可能是一个初学者的问题,但是在测试我的 sqlite 数据库时,我发现当我删除一行时,当我插入新行时行 ID 会不断增加,并且不会重用例如已删除行的行 ID。那么,如果行 id 用完它的最大值,而表中的行数较少,会发生什么?
问问题
126 次
2 回答
3
这是记录在案的:
如果该表之前保存了具有最大可能 ROWID 的行,则不允许新的 INSERT,并且任何插入新行的尝试都将失败并出现 SQLITE_FULL 错误。
如果省略AUTOINCREMENT
关键字,ID 仍将自动递增,但如果您删除最后一行或值溢出,则可以重用:
如果最大的 ROWID 等于最大可能的整数 (9223372036854775807),则数据库引擎开始随机挑选正候选 ROWID,直到找到以前未使用的 ROWID。
于 2013-02-08T11:38:07.303 回答
0
当您将行号添加为自动增量时,您必须检查最大值。如果数据行达到该限制,则必须使用更大的数据类型。但通常整数不会交叉,因为数据库设计人员必须关注规范化。
如果数据行给这么大。你真的被查询困住了。这将花费大量时间。SQLite
主要用于低端设备。他们没有能力处理大数据。
于 2013-04-26T10:51:49.173 回答