探索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的表,用于记录自增长字段已经用过的值,用户可以操作但不建议、容易引起引擎混乱