清空SQLite表后,如何使表的自增ID值也归零。

    xiaoxiao2023-11-02  155

    问题描述: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;

    参考:

    https://www.cnblogs.com/top5/p/3385912.html

    https://www.jianshu.com/p/80d510e32c84

    https://charlescui.iteye.com/blog/351001

    最新回复(0)