探索SQLite自增字段的奥秘

发表时间: 2022-02-09 23:36

首先是下面的一段代码:实现创建数据库data1.db、并在数据库内创建了表fruit1、将id字段设置为自增字段;

#include<stdio.h>#include"sqlite3.h"#define datalib "data1.db"int main(){        sqlite3 *hd;        char *errmsg;        if((sqlite3_open(datalib,&hd))!=SQLITE_OK){                printf("%s\n",sqlite3_errmsg(hd));                return -1;        }        else{                printf("data1 create ok\n");        }        //create table        if((sqlite3_exec(hd,"create table if not exists fruit1(id INTEGER PRIMARY KEY AUTOINCREMENT,name char,price float\        ,intime char,vitime char);",NULL,NULL,&errmsg))!=SQLITE_OK){                printf("%s\n",errmsg);        }        else{                printf("table ok\n");        }        sqlite3_close(hd);//close data1        return 0;}

编辑切换为居中

添加图片注释,不超过 140 字(可选)

创建数据库使用了:sqlite3_open 函数

创建表使用了:sqlite_exec函数

这两个函数在之前的文章“数据库之SQLITE”中有介绍

自增字段的实现主要是靠 INTEGER PRIMARY KEY AUTOINCREMENT 来设定的、这样设定以后id的值

1.将会自动赋值为比当前表中该字段最大值还大1的值

2.在到达最大之后、要想自增是不行的,自增长字段会丢出一个SQLITE_FULL的错误

3.自增长字段在使用新值时,是使用从未被使用过的值

4.使用自增长字段、引擎内部会生成一个sqlite_sequence的表,用于记录自增长字段已经用过的值,用户可以操作但不建议、容易引起引擎混乱