SQLite清空表并将自增列归零
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清空表并将自增列归零相关推荐
- android sqlite清空表数据
SQL标准中有TRUNCATE TABLE语句,用来清空表的所有内容.但SQLite不支持这个语句.在SQLite中直接使用"DELETE FROM TableName"就可以了. ...
- Sqlite清空表数据
delete from TableName; //清空数据 update sqlite_sequence SET seq = 0 where name ='TableName';//自增长ID为0 使 ...
- sql 增加自增列 耗时长_SQLServer为已有数据的表添加一个自增列
ORACLE 实例及RAC ORACLE 实例及RAC 一.问题 (1)现象 部署一个sh脚本到生产oracle服务器上,该sh脚本负责读取外系统提供的txt文件,然后用sql loader入库,由o ...
- java获取插入数据库表中的自增列值的一个简单方法
PreparedStatement ps = conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS); // 第一步 ps.execute ...
- oracle 表列 自增,ORACLE表建立自增列
create tablespace studentDB datafile 'E:\datafiles_1.dbf' size 10m; create user Huang_Ying_Bo identi ...
- mysql 自增列 类型_MySQL--自增列学习
##=====================================================================================## 在数据库表设计中会纠 ...
- MySQL--自增列学习
##=====================================================================================## 在数据库表设计中会纠 ...
- 达梦数据库修改字段长度_DM7 达梦数据库 序列 和 自增列 说明
在DM 数据库中,自增有两种方法实现,一种是自增列,另一种通过序列实现. 1 自增列 1.1 创建自增列 在创建表时可以制定列是否自增. 一个表只能有一个自增列. 语法格式https://www.cn ...
- Sql Server中查看/修改identity(自增列)的值
查看某个表中的自增列当前的值:DBCC CHECKIDENT (TableName) 修改某个表中的自增列当前的值:DBCC CHECKIDENT (TableName, RESE ...
最新文章
- u-boot启动过程
- Jeff Dean晒Google Brain团队2017成绩单!
- JavaScript学习笔记——underscore操作对象的方法
- Weights and Measures(贪心+动态规划)
- 百度联盟广告如何理解按父容器宽度
- MySQL 引擎特性 · InnoDB Buffer Pool
- C# GDI+绘图介绍
- java excel 兼容问题_java--POI解析excel兼容性问题
- java reflect 例子
- jquery操作select - 代码合集
- Linux后台运行java的jar包,java基础面试笔试题
- oracle设置表的主键和外键,Oracle中给表添加主键、外键
- fedora 16 x64 安装gnustep object-c开发环境
- 2019 Web 前端热点笔试面试题总结(转载)
- OpenCV : 图像数字化
- 视频教程-微信公众号编辑器开发-微信公众号开发11-微信开发php-微信开发
- windows 系统开启的端口调研
- [游戏程序] 经典游戏服务器端架构概述
- Mini CFA 考试练习题 Ethics and Investment Professionalism
- [MAC]如何查看已用端口