sqllite 自增id和rowid的一个区别

SQLite中,自增ID(integer primary key autoincrement)和ROWID在行为上有显著区别。自增ID在清空表后不会重置,而ROWID会从1开始。要重置自增ID,需通过sqlite_sequence表操作。ROWID当达到最大值时会从1找未使用的值,而自增ID则会报错。

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

1,定义自增id

      

   id integer primary key autoincrement

2,一个新的表自增id和rowid都是从1开始向上增加

3,before: id=10; rowid=10;

     delete from table;

     insert into table (xxx) values (xxx);

     after:    id=11,rowid=1;

   也就是说在清空表后rowid会重新从1开始而自增id不会

4,使自增id重新从1开始

      

      sqllite 有个表sqlite_sequence维护自增id的最大值,


      select * from sqlite_sequence

      

     

      方法:delete from table

                update sqlite_sequence set seq=1 where name=tablename

      所有自增id从1开始

                 delete from sqlite_sequence (前提是table清空了,

     不然sqlite_sequence会接上上次最多id开始增加 )

5,rowid增长到最大值是不会报错而是从1开始再找个没使用的位置赋值

     id则会报错 (网上说的,无心验证)


6  使用rowid很大程度上不满足数据的一致。


        




      

       

       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值