`

如何在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错误码.
分享到:
评论

相关推荐

    【总结】数据库自增字段的 3 种实现方式

    SQLite使用`AUTOINCREMENT`关键字来创建自增字段。然而,与其它数据库系统不同,SQLite的`AUTOINCREMENT`会在每次插入时检查是否存在已删除的记录,如果存在则重用其ID,这可能导致不连续的序列。创建表的例子如下...

    Sqlite3数据库支持库

    在“Sqlite3数据库支持库210版静态版sqlite3fne”这个文件中,"210版"可能表示版本号,而"静态版"意味着这个库是静态链接的,即它包含了所有依赖,可以被直接集成到应用中,而无需额外安装SQLite3的运行时环境。...

    delphi使用unidac连接sqlite实现增删改的例子

    本篇文章将详细探讨如何在Delphi中使用Unidac连接SQLite数据库并实现数据的增、删、改操作。 首先,我们需要了解Unidac的基本用法。Unidac提供了一套统一的接口,使得开发者可以在不同的数据库之间轻松切换。在...

    SQLite3中的数据类型

    在SQLite3中,使用AUTOINCREMENT关键字可以创建一个自增的主键,但这不同于其他数据库系统的自增字段。只有INTEGER PRIMARY KEY列才能使用AUTOINCREMENT,而且每次插入新记录时,会找到当前最大值加1作为新值。如果...

    SQLite-Expert-Personal使用教程.docx

    - 在桌面上找到SQLiteExpert的图标或从“开始”菜单中选择“SQLiteExpert”启动程序。 2. **新建数据库**: - 在软件界面左上角点击红色加号图标或通过菜单栏选择“文件”->“新建数据库”。 - 输入数据库名称及...

    SQLITE使用教程

    5.4. sqlite 自增字段的写法 自增字段通常定义为主键,并使用 `INTEGER PRIMARY KEY AUTOINCREMENT`,如 `id INTEGER PRIMARY KEY AUTOINCREMENT`。 5.5. 分页查询 在 SQLite 中,可以使用 `LIMIT` 和 `OFFSET` ...

    sqlite3的ORM框架

    这包括字段名的映射、主键的处理、自增字段的管理等。 4. **CRUD操作**:ORM框架提供插入(Create)、读取(Read)、更新(Update)和删除(Delete)的基本操作。例如,可以通过类的方法直接创建新记录、查询记录、...

    SQLite 中文指南之FAQ第1/6页

    1. **如何创建自增字段?** 在SQLite中,如果一个字段被声明为 `INTEGER PRIMARY KEY`,那么它将自动变为自增字段。当你尝试向这个字段插入NULL时,系统会自动填充一个比当前表中最大整数值大1的新整数。如果表为空...

    Sqlite Expert license key

    1. **数据库设计**:SQLite Expert允许用户通过拖放方式创建和编辑表格,设置字段类型、约束(主键、唯一、外键等)、默认值和自增属性。此外,还可以创建和管理索引,优化查询性能。 2. **SQL编辑与调试**:内置的...

    Android sqlite设置主键自增长的方法教程

    当我们需要在SQLite数据库中创建表并定义主键时,通常希望主键能够自动递增,这样在插入新记录时,系统会自动为每条记录生成唯一的标识。在本教程中,我们将探讨如何在Android的SQLite数据库中设置主键自增长的方法...

    ios-GDatabase--基于ORM的FMDB数据库存储解决方案. 面向模型API. 一句代码存储,读取.对存储模型无需继承BaseObject. 可自定义多主键,使用sqlite 关键字.自定义序列化字段等.极大方便项目中使用..zip

    支持sqlite 保留字作为字段插入. 无需考虑模型属性命名. 支持多主键,单一主键,自增主键数据表创建 支持模型黑名单. 可以自定义部分字段不进行数据库存储操作. 支持模型字段自定义序列化. 无需手动创建数据表. 无需...

    sql-sqlite-commands-cheat-sheet

    在SQLite中,创建数据库使用`sqlite3`命令,例如`sqlite3 <database_name>.db`。这个命令会启动SQLite程序,并指定一个数据库文件。如果文件不存在,会自动创建一个新的数据库文件。如果不指定数据库文件,SQLite会...

    SQLiteExpert64位-v5.3.4.zip

    此外,它还支持自增字段、主键约束、外键约束以及索引的创建,帮助用户构建结构清晰、高效的数据库模型。 在编辑方面,SQLiteExpert Pro提供了强大的数据编辑功能。用户可以直接在界面上添加、修改和删除记录,无需...

    SQLiteExpert

    2. **表设计**:创建新表,定义字段类型、长度、是否允许空值等属性,设置主键和外键约束,以及自增字段。 3. **数据操作**:插入、修改、删除记录,支持批量操作;提供查询编辑器,支持SQL语句的编写和执行,包括...

    SQLiteExpert3.jar

    1. 数据库创建:你可以通过这个工具创建新的SQLite数据库,定义表结构,设置字段类型、主键、外键等关系,以及自增、非空等约束。 2. 表管理:对已有的表格进行修改,添加、删除或修改字段,重命名表格,以及检查表...

    SQLiteManager工具

    3. **表管理**:在SQLiteManager中,你可以创建、修改和删除表,设置字段类型、主键、外键约束,以及自增属性。同时,可以查看和编辑表中的数据,支持批量插入和更新。 4. **查询和视图**:SQLiteManager提供了一个...

    android sqlite

    在Android中使用SQLite之前,需要使用SQLiteOpenHelper类来管理数据库的创建和版本管理。SQLiteOpenHelper是一个抽象类,它提供了一个方便的接口来管理数据库版本和创建/更新数据库。当数据库被创建时,...

    sqlserver转换sqlite

    5. **结构迁移**:使用工具导出SQL Server的数据库结构(表、索引、视图、存储过程等)为SQLite兼容的SQL脚本,然后在SQLite中执行这些脚本创建对应的结构。 6. **数据迁移**:执行实际的数据迁移。这可能是个耗时...

    SQLite Database Browser 2.0

    1. 数据库设计:用户可以通过直观的界面来创建新的数据库表,定义字段类型(如整型、浮点型、文本、日期时间等),设置主键和外键约束,以及自增属性。 2. SQL查询编辑器:提供了一个内置的SQL编辑器,允许用户输入...

Global site tag (gtag.js) - Google Analytics