SQLite
简单的回答:一个声明为 INTEGER PRIMARY KEY 的字段将自动增加。

这里是详细的答案: 从 SQLite 的 2.3.4 版本开始,如果你将一个表中的一个字段声明为 INTEGER PRIMARY KEY,那么无论你何时向该表的该字段插入一个 NULL 值,这个 NULL 值将自动被更换为比表中该字段所有行的最大值大 1 的整数;如果表为空,那么将被更换为 1。比如,假设你有这样的一张数据表:

CREATE TABLE t1(
            a INTEGER PRIMARY KEY,
            b INTEGER
        );

在这张数据表里,声明

INSERT INTO t1 VALUES(NULL,123);

在逻辑意义上等价于:

INSERT INTO t1 VALUES((SELECT max(a) FROM t1)+1,123);

一个新的API函数 sqlite3_last_insert_rowid() 返回最近的插入操作的整形键

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

最新文章

  1. 匿名方法与Lambda表达式
  2. 清华学堂 Range
  3. python 列表转换成字符串
  4. Caffe.proto使用
  5. C#------如何取出exe运行文件给客户使用
  6. 必须知道的.net(继承)
  7. BI名词解释
  8. C++中的动态类型与动态绑定、虚函数、运行时多态的实现
  9. JavaScript基础(语法类型转换、运算符、语句)
  10. 201521123073 《Java程序设计》第10周学习总结
  11. Scrum 冲刺 第一日
  12. HDU-5738
  13. 关于HttpClient上传中文乱码的解决办法
  14. 用Java代码通过JDBC连接Hiveserver2
  15. centos7安装遇到的坑
  16. RocketMQ消息队列安装
  17. P3403 跳楼机
  18. Stanford CoreNLP使用需要注意的一点
  19. Verilog中使用'include实现参数化设计
  20. mybatis比hibernate处理速度快的原因

热门文章

  1. 不同storyboard间跳转
  2. 线段树&树状数组模板
  3. LuffyCity-MySQL综合练习50实例
  4. Halcon18 Linux 下载
  5. Leetcode 581.最短无序连续子数组
  6. Leetcode 546.移除盒子
  7. 微信小程序--问题汇总及详解之清空电话号码
  8. MySql数据库 - 3.利用MySql Workbench 对数据库进行操作
  9. Mybatis通过接口的方式实现增删改查
  10. [cocos2dx utils] cocos2dx读取,解析csv文件