SQLite清空表并将自增列归零

一、SQLite清空表并将自增列归零

在SQLite中直接使用 DELETE FROM TableName 就可以了。
通常在清空表的时候,还需要把自增列归零。

在SQLite中定义自增列的方法如下:代码如下:

CREATE TABLE TableName ( id INTEGER PRIMARY KEY AUTOINCREMENT, name varchar, type Integer );

1 当SQLite数据库中包含自增列时,会自动建立一个名为 sqlite_sequence 的表。
这个表包含两个列:name和seq。name记录自增列所在的表,seq记录当前序号(下一条记录的编号就是当前序号加1)。
2. 如果想把某个自增列的序号归零

只需要修改 sqlite_sequence表就可以了。

代码如下:

UPDATE sqlite_sequence SET seq = 0 WHERE name='TableName';

也可以直接把该记录删掉:

代码如下:

DELETE FROM sqlite_sequence WHERE name='TableName';
3. 要想将所有表的自增列都归零,直接清空sqlite_sequence表就可以了:
代码如下:

DELETE FROM sqlite_sequence;

二、Sqlite中INTEGER PRIMARY KEY AUTOINCREMENT分析

当你在某个sqlite数据库文件中,使用自增长字段,引擎会自动产生一个sqlite_sequence表,用于记录每个表的自增长字段的已使用的最大值,用户可以看到,
并可以用使用Update、Delete和Insert操作,但不建议这么使用,这会让引擎混乱。

也就是说,只要你在建表语句中加入INTEGER PRIMARY KEY AUTOINCREMENT字段类型(注意integer类型,主键primary key,自增标记autoincrement,共计3个属性都必不可少。实际上sqlite貌似对AUTOINCREMENT自增字段有限制,必须是主键才能够添加该AUTOINCREMENT自增属性,否则在建立表时会失败报错,当然类型为integer数值也是AUTOINCREMENT自增属性必不可少的条件),那么当你在该表中insert数据的时候,sqlite_sequence表中才会自动将当前表的自增字段的最大值记录记录到sqlite_sequence表中。

注意1:即sqlite_sequence中保存的值,是某个自增字段的当前表的最大值。经亚强测试,该表中的最大值必须是:【使用insert 插入值】,或者【insert插入值,没有显示插入自增字段,而是自增字段默认自增的值】,这2种情况下触发sqlite_sequence表自动检测改动表中的自增字段的当前最大值,然后更新到当前sqlite_sequence表中。比如我们用update命令更新自增字段为所在表a中的自增字段为当前自增字段值中最大的值345。那么我们再来查询sqlite_sequence表,此时该sqlite_sequence表中的最大值并没有更新为a表中自增字段的最大值345(即我们刚刚update的那个值),从而可以看出sqlite_sequence表中存储的值,不一定是对应表中自增字段的最大值。

注意2:我们可以update表sqlite_sequence中,各个表对应的seq值。我们对某个表新插入行数据的时候,自增字段的值根据2个值确定,,哪个大取那个值+1作为新插入行的自增字段的值。这2个参数是,1:表中自增字段中最大的值。2:sqlite_sequence中存储的当前操作的表对应的seq字段的值。

SQLite清空表并将自增列归零相关推荐

  1. android sqlite清空表数据

    SQL标准中有TRUNCATE TABLE语句,用来清空表的所有内容.但SQLite不支持这个语句.在SQLite中直接使用"DELETE FROM TableName"就可以了. ...

  2. Sqlite清空表数据

    delete from TableName; //清空数据 update sqlite_sequence SET seq = 0 where name ='TableName';//自增长ID为0 使 ...

  3. sql 增加自增列 耗时长_SQLServer为已有数据的表添加一个自增列

    ORACLE 实例及RAC ORACLE 实例及RAC 一.问题 (1)现象 部署一个sh脚本到生产oracle服务器上,该sh脚本负责读取外系统提供的txt文件,然后用sql loader入库,由o ...

  4. java获取插入数据库表中的自增列值的一个简单方法

    PreparedStatement ps = conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS); // 第一步 ps.execute ...

  5. oracle 表列 自增,ORACLE表建立自增列

    create tablespace studentDB datafile 'E:\datafiles_1.dbf' size 10m; create user Huang_Ying_Bo identi ...

  6. mysql 自增列 类型_MySQL--自增列学习

    ##=====================================================================================## 在数据库表设计中会纠 ...

  7. MySQL--自增列学习

    ##=====================================================================================## 在数据库表设计中会纠 ...

  8. 达梦数据库修改字段长度_DM7 达梦数据库 序列 和 自增列 说明

    在DM 数据库中,自增有两种方法实现,一种是自增列,另一种通过序列实现. 1 自增列 1.1 创建自增列 在创建表时可以制定列是否自增. 一个表只能有一个自增列. 语法格式https://www.cn ...

  9. Sql Server中查看/修改identity(自增列)的值

    查看某个表中的自增列当前的值:DBCC   CHECKIDENT   (TableName) 修改某个表中的自增列当前的值:DBCC   CHECKIDENT   (TableName,   RESE ...

最新文章

  1. u-boot启动过程
  2. Jeff Dean晒Google Brain团队2017成绩单!
  3. JavaScript学习笔记——underscore操作对象的方法
  4. Weights and Measures(贪心+动态规划)
  5. 百度联盟广告如何理解按父容器宽度
  6. MySQL 引擎特性 · InnoDB Buffer Pool
  7. C# GDI+绘图介绍
  8. java excel 兼容问题_java--POI解析excel兼容性问题
  9. java reflect 例子
  10. jquery操作select - 代码合集
  11. Linux后台运行java的jar包,java基础面试笔试题
  12. oracle设置表的主键和外键,Oracle中给表添加主键、外键
  13. fedora 16 x64 安装gnustep object-c开发环境
  14. 2019 Web 前端热点笔试面试题总结(转载)
  15. OpenCV : 图像数字化
  16. 视频教程-微信公众号编辑器开发-微信公众号开发11-微信开发php-微信开发
  17. windows 系统开启的端口调研
  18. [游戏程序] 经典游戏服务器端架构概述
  19. Mini CFA 考试练习题 Ethics and Investment Professionalism
  20. [MAC]如何查看已用端口

热门文章

  1. 键盘事件keydown、keypress、keyup随笔整理总结(摘抄)
  2. 阿里云CPU性能Intel Xeon(Sapphire Rapids) Platinum 8475B
  3. C语言,if循环 for 循环 while循环 switch循环 do...while()循环
  4. JMeter 软件测试基础
  5. 输入5个数字从小到大排序
  6. 基于python的星号三角形
  7. 河南省高校联盟战队课件CSRF(跨站请求伪造复现与利用)
  8. 银行卡的三个磁道【转】
  9. 关于 cc3k-villain 作业的思考
  10. HTML隐藏滚动条,还带着滚动效果