2010-01-12 08:39 35135人阅读 评论(8) 收藏 举报
 分类:
SQL(11) 

版权声明:本文为博主原创文章,未经博主允许不得转载。

搞定了一个困扰许久的问题,原来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错误码.

最新文章

  1. Unity学习疑问记录之协程
  2. geotrellis使用(十)缓冲区分析以及多种类型要素栅格化
  3. JavaScript学习笔记-简单的计时钟表
  4. 一个奇怪的网络故障 默认网关为0.0.0.0(Windows)
  5. iOS开发--完整项目
  6. VC、MFC中设置控件的背景色、标题、字体颜色、字体要注意的地方[转]
  7. order by调优的一些测试
  8. 禁用Java DNS缓存-Disable DNS caching
  9. (大数据工程师学习路径)第一步 Linux 基础入门----文件系统操作与磁盘管理
  10. 使用myeclipse创建带注解的model实体类
  11. spring中对象的注入方式
  12. js替换字符串中所有指定的字符
  13. iOS开发从申请账号到上线APP Store步骤
  14. Python selenium 三种等待方式详解
  15. ●BZOJ 3998 [TJOI2015]弦论
  16. LeetCode之“链表”:Reverse Nodes in k-Group
  17. js call() 笔记
  18. Halcon常用算子02
  19. Java课程设计---web版斗地主
  20. WebRTC博客推荐

热门文章

  1. 怎样安装Windows7操作系统
  2. Python爬虫爬取一篇韩寒新浪博客
  3. AngularJS初接触
  4. SQL调用Webservices
  5. BZOJ 1066 Dinic
  6. Codefroces 731C. Socks
  7. android+myeclipse+mysql下拉框数据绑定
  8. poj2243 && hdu1372 Knight Moves(BFS)
  9. 第一天,Mysql安装,DDL(数据库定义语言),DBA,DML(数据库操纵语言),导入外面的sql文件
  10. easyUI Tab href,content差别