autoincrement列会记住它在SQLite表中的最后一个值

时间:2011-08-03 07:22:50

标签: sqlite

在一个表中,我有一个自动递增主键的列。

问题出在这种情况:

  • 插入4行
  • 随后删除了那些4
  • 插入新行,自动增量列值为5

如何让此自动增量列的值为1

3 个答案:

答案 0 :(得分:2)

SQLite自动增量字段将永久增加。它不会替换已删除的值。仅当存在最大可能值时才会替换已删除的值。请参阅this。你想要实现的是使用自动增量字段无法实现的目标。你必须以编程方式进行。

答案 1 :(得分:1)

您可以使用整数主键,而不是使用自动增量,它可以正常工作。即使您的行被逐个删除,下一个增量也将正确完成。如果将整数主键字段保留为空,则会获取行的最大值,并添加1(类似于max(value)+1)。它对我来说很好。

答案 2 :(得分:0)

如果我们有一个自动增量的主要内容,即使删除所有现有条目,该值也不会相同。它将从最后一次插入时停止的位置继续。如果您希望主键从1开始,则需要截断表格或删除&重新创建表。

在SQLite中,“truncate”命令无效。您可以使用“从 tablename 中删除”和“vacuum tablename ”将主键计数重置为从1开始。请确保没有“where”子句删除命令。