sqlite的自增主键与自增主键归零

在SQLite中创建`ProcessList`表时,`Id`被定义为整数类型的自增主键。通过`insert`语句插入数据时,可以省略`Id`字段以利用自增特性。当需要重置自增主键为1时,可以使用`PRAGMA auto_vacuum = FULL; DELETE FROM ProcessList;`的组合操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


1.sqlite的自增主键:
用数据库缓存一些数据,想实现队列的那种,先入先出,需要对插入sqlite的数据进行个排序,实验了rowid,好像sqlite不能按照rowid删除,故考虑增加一个自增主键的字段,来区分插入的先后!
sqlite从2.3.4版本开始支持自增主键, 如果将一个表中的一个字段声明为 INTEGER PRIMARY KEY,那么只需向该表的该字段插入一个 NULL 值,这个 NULL 值将自动被更换为比表中该字段所有行的最大值大 1 的整数;如果表为空,那么将被更换为 1。

CREATE TABLE "ProcessList"(
[Id] integer(4) PRIMARY KEY
,[Type] varchar(20)
,[Name] varchar(30)
,[IsUse] int
)
    执行
insert into processlist
values
(null,'a','b',1)

要始终得到在整个表中唯一的键,在INTEGER PRIMARY KEY的声明之前加关键词AUTOINCREMENT.这样被选的键将总是比表中已存在的最大键大1。若可能的最大键已存在于表中,INSERT操作将失败并返回一个SQLITE_FULL错误码。
故建议sql为:
CREATE TABLE "ProcessList"(
[Id] integer(4)  AUTOINCREMENT  PRIMARY KEY
,[Type] varchar(20)
,[Name] varchar(30)
,[IsUse] int
)
2.自增主键归零
自增主键是通过表sqlite_sequence来实现的。使用自增长字段,引擎会自动产生一个sqlite_sequence表,在sqlite_sequence中有两个字段name、seq。name记录了表名,seq记录了该表的最大id,每插入一条记录,相应的seq加1,删除记录时,此记录不会变化。
故若想自增主键归零需手动修改sqlite_sequence中相应的记录。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值