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错误码.

相关文章
|
7月前
|
SQL 数据库管理
sqlite语句order by两个字段同时排序处理
sqlite语句order by两个字段同时排序处理
75 0
|
SQL 数据库 数据库管理
Sqlite升级时向已有表中增加字段
Sqlite数据库升级时,我们经常会遇到给已有表中增加字段的操作。一般来说,**给已有表中增加字段**是数据库操作中的基操,没必要再专门写篇blog记录的,但是sqlite对SQL语句支持的不够彻底,比方说这次我们用到的"ALTER TABLE"命令。
|
Android开发 数据库管理
android sqlite 判断表和表中字段是否存在方法
android sqlite 判断表和表中字段是否存在方法
|
数据库 数据库管理
sqlite数据库中自增key的设定,autoincrement 和 rowid
在用sqlite设计表时,每个表都有一个自己的整形id值作为主键,其实可以不指定这么一个id值,sqlite内部本来就会为每个表加上一个 rowid,这个rowid可以当成一个隐含的字段使用,但是由sqlite引擎来维护的,在3.0以前rowid是32位的整数,3.0以后是 64位的整数,为什么不直接使用这个内部的rowid作为每个表的id主键呢。
2585 0
|
数据库 数据库管理 存储
|
测试技术 数据库 数据库管理
SQLite事务与自增深度分析
SQLite什么都好,就怕“database is locked”这些年来想尽办法去规避它。测试代码: static void Test2() { XCode.Setting.Current.
793 0
|
SQL 数据库 数据库管理
ASP.NET中对SQLITE数据库进行插入操作后返回自增的ID
啥也不说了,刚刚研究出来滴~~~贴码:         /// 插入        /// 返回刚刚插入的ID        ///         ///         ///         ///         public bool Insert(string groupname, ...
1037 0
|
7月前
|
存储 数据库连接 数据库
Android数据存储:解释SQLite数据库在Android中的使用。
Android数据存储:解释SQLite数据库在Android中的使用。
98 0
|
6月前
|
数据库 Android开发 数据安全/隐私保护
在 Android Studio 中结合使用 SQLite 数据库实现简单的注册和登录功能
在 Android Studio 中结合使用 SQLite 数据库实现简单的注册和登录功能
288 2
|
6月前
|
SQL 存储 数据库
48. 【Android教程】数据库:SQLite 的使用
48. 【Android教程】数据库:SQLite 的使用
116 1