删除记录后重置 web2py 数据库 ID

web2py database id reset after deleting records

Web2py 中有没有办法在删除某些行后重置 table 的 ID。 假设我有 15 条记录,我删除了最后 5 条,如果我插入一条新记录,它将以 id 16 开头,我更喜欢以 11 开头。

web2py DAL id 字段是 autoincrement 整数字段,自动增量行为由数据库引擎处理。除非你真的需要保持连续的 id 值没有间隙,否则你可能不应该为此烦恼。 (如果您需要删除较旧的记录而不仅仅是最近插入的记录,会发生什么情况?您将如何避免竞争条件?)

如果您必须重置自动递增序列,您将需要查阅您正在使用的数据库的相关文档。例如,如果您正在使用 SQLite,您将更新特殊 sqlite_sequence table 的相关记录,如记录 here (see example code)。更新序列时,一定要防止对 table 进行任何其他写入——否则可能会在您更改之前插入具有更大 id 的新记录。