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

相关文章
|
17天前
|
SQL 关系型数据库 MySQL
mysql编写sql脚本:要求表没有主键,但是想查询没有相同值的时候才进行插入
mysql编写sql脚本:要求表没有主键,但是想查询没有相同值的时候才进行插入
30 0
|
存储 关系型数据库 MySQL
MySQL中库/表/字段/主键/用户操作示例与详解
MySQL中库/表/字段/主键/用户操作示例与详解
165 0
|
11月前
|
关系型数据库 MySQL 数据库
MySQL中列属性(主键、唯一键和自增等)使用实践
MySQL中列属性(主键、唯一键和自增等)使用实践
244 0
|
Oracle 关系型数据库 MySQL
数据库中设置列/字段自增
介绍数据库中设置列/字段自增(Oracle和Mysql)的实现方式
数据库中设置列/字段自增
|
存储 关系型数据库 MySQL
Mysql数据库操作篇1(数据类型,库&表修改操作)
Mysql数据库操作篇1(数据类型,库&表修改操作)
139 0
|
存储 SQL 关系型数据库
MySQL数据库的创建(表的创建,列,表的增删改,深入浅出)
存储数据是处理数据的第一步 。只有正确地把数据存储起来,我们才能进行有效的处理和分析。否则,只能是一团乱麻,无从下手。那么,怎样才能把用户各种经营相关的、纷繁复杂的数据,有序、高效地存储起来呢? 在 MySQL 中,一个完整的数据存储过程总共有 4 步,分别是创建数据库、确认字段、创建数据表、插入数据。
MySQL数据库的创建(表的创建,列,表的增删改,深入浅出)
|
关系型数据库 Java 数据库
使用jpa在postgresql数据库中创建主键自增表
jpa依赖 org.springframework.boot spring-boot-starter-data-jpa org.
3394 0
|
SQL 存储 数据库
SQL 基础(二)数据表的创建、约束、修改、查看、删除
SQL 基础(二)数据表的创建、约束、修改、查看、删除
269 0
SQL 基础(二)数据表的创建、约束、修改、查看、删除
|
SQL 关系型数据库 MySQL
MySQL 数据库利用alter语句修改表字段属性实例演示,如何拓展表字段长度,sql语句修改表字段名称和类型
MySQL 数据库利用alter语句修改表字段属性实例演示,如何拓展表字段长度,sql语句修改表字段名称和类型
405 0
MySQL 数据库利用alter语句修改表字段属性实例演示,如何拓展表字段长度,sql语句修改表字段名称和类型
|
数据库
数据库面试题【十四、主键使用自增ID还是UUID】
数据库面试题【十四、主键使用自增ID还是UUID】
130 0