zoukankan      html  css  js  c++  java
  • SQLITE数据表主键设置Id自增方法

     

    SQLITE数据表主键设置Id自增方法

    标签: sqliteintegerinsertnulltableapi
     分类:
     

        搞定了一个困扰许久的问题,原来sqlite中的主键也是可以设置为自增的:)方法就是声明为 INTEGER PRIMARY KEY 的字段可以自动增加。
        网上查到资料说,从 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)
        在逻辑意义上等价于:
    insert into processlist VALUES((SELECT max(Id) FROM processlist)+1, 'a','b',1);

    insert into processlist
    values
    (null,'aa','bb',1)
        执行两条插入语句后再查询表中数据:
    select * from processlist
        结果如下:

    Id Type Name IsUse
    1  a       b       1 
    2  aa     bb     1 

        一个新的API函数 sqlite3_last_insert_rowid() 返回最近的插入操作的整形键.注意这个整型键始终比之前插入表中的最后一个键大1。新键相对于表中的已有键来说是唯一的, 但它可能与之前从表中删除的键值重叠。要始终得到在整个表中唯一的键,在INTEGER PRIMARY KEY的声明之前加关键词AUTOINCREMENT.这样被选的键将总是比表中已存在的最大键大1。若可能的最大键已存在于表中,INSERT操作将失败并返回一个SQLITE_FULL错误码.

  • 相关阅读:
    定时任务cron表达式解析
    dubbo admin的搭建(windows环境)
    搭建一个基于springboot的dubbo demo
    mysql考试成绩排名-关于@rowtotal、@rownum
    理解JMM及volatile关键字
    UnityLearn_Beginner_UnityTips
    UnityLearn_Beginner_UnityBasics
    Unity3D&Photon制作吃鸡游戏(未完)
    UNITY_UGUI
    UNITY_资源路径与加载外部文件
  • 原文地址:https://www.cnblogs.com/gosteps/p/5316318.html
Copyright © 2011-2022 走看看