|
问题描述:sqlite3在清空table后,如果table中有自增ID值,那么这个值是不会归零的,而且会继续呈现递增。例如:对于表A,若给表设置ID(主键)为自增,那么如果之前在表中插入10条记录,那么在清空表A后,再次插入记录是ID的值并不是从零开始,而是继续从11开始。
产生原因:sqlite_sequence表(自动创建)
sqlite_sequence表也被称为系统表,用来保存其他表的RowID的最大值。sqlite_sequence表是在SQLite3创建表时自动创建的,该表包含两列,第一列为neme,用来存储表明。第二列为seq,用来保存对应表的RowID的最大值。当记录被插入表时,该表会自动更新。如果想把某个表的自增列序号归零,则需要修改sqlite_sequence表的对应记录。
解决办法:
1、删除表,然后重新创建新表(不推荐)。
2、修改sqlite_sequence中对应表的自增列的值。
- DELETE FROEM 'TABLENAME';
- UPDATE sqlite_sequence SET seq=0 WHRER name = 'TABLENAME';
复制代码 3、直接删除对应的记录。
- DELETE FROM 'TableName';
- DELETE FROM sqlite_sequence WHERE name='TableName';
复制代码 4、若想将所有的表的自增列都归零,则直接删除该表
- DELETE FROM sqlite_sequence;
复制代码
|
|