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

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

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值