在SQLite 3/MySQL中重置行号计数

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (14)

我正在使用SQLite 3。我使用整数作为主ID加载一个表,比如30行,然后自动递增。

现在,我从表中删除所有行,然后将一些新信息重新加载到表中。

问题是:行计数(我的PrimaryID)现在从31开始。有什么方法可以从数字1开始加载新行吗?

提问于
用户回答回答于

SQLite

用途:

DELETE FROM your_table;    
DELETE FROM sqlite_sequence WHERE name = 'your_table';

SQLite使用特殊的SQLITE跟踪表所保存的最大ROWID。_序列表。SQLITE_每当创建包含AUTOINCREMENT列的普通表时,都会自动创建序列表并自动初始化。SQLITE的内容_可以使用普通UPDATE、INSERT和DELETE语句修改Sequence表。但是,对这个表进行修改可能会扰乱AUTOINCREMENT密钥生成算法。在你进行这样的改变之前,一定要知道你在做什么。

MySQL

用途:

ALTER TABLE tbl AUTO_INCREMENT = 1;

在这两种情况下,数据库都不关心id号是否是序列--只是值是唯一的。如果用户从未看到主键值(他们不应该看到,因为数据可能会发生变化&不会总是在主键值上),我就不会去考虑这些选项。

用户回答回答于

对于MySQL:

使用TRUNCATE TABLE tablename若要清空表(删除所有记录)并重置自动增量计数,请执行以下操作。

也可以使用ALTER TABLE tablename AUTO_INCREMENT = 0;如果你只想重设计数。

对于SQLite:

DELETE FROM tablename;
DELETE FROM SQLITE_SEQUENCE WHERE name='tablename';

扫码关注云+社区