SQLITE数据表主键设置Id自增方法

  网上查到资料说,从 SQLite 的 2.3.4 版本开始,如果将一个表中的一个字段声明为 INTEGER PRIMARY KEY,那么只需向该表的该字段插入一个 NULL 值,这个 NULL 值将自动被更换为比表中该字段所有行的最大值大 1 的整数;如果表为空,那么将被更换为 1。
CREATE TABLE "ProcessList"([Id] integer(4) PRIMARY KEY,[Type] varchar(20),[Name] varchar(30),[IsUse] int  )    执行insert into processlistvalues(null,'a','b',1)    在逻辑意义上等价于:insert into processlist VALUES((SELECT max(Id) FROM processlist)+1, 'a','b',1);
insert into processlistvalues(null,'aa','bb',1)    执行两条插入语句后再查询表中数据:select * from processlist    结果如下:
Id Type Name IsUse1  a       b       1 2  aa     bb     1     一个新的API函数 sqlite3_last_insert_rowid() 返回最近的插入操作的整形键.注意这个整型键始终比之前插入表中的最后一个键大1。新键相对于表中的已有键来说是唯一的, 但它可能与之前从表中删除的键值重叠。要始终得到在整个表中唯一的键,在INTEGER PRIMARY KEY的声明之前加关键词AUTOINCREMENT.这样被选的键将总是比表中已存在的最大键大1。若可能的最大键已存在于表中,INSERT操作将失败并返回一个SQLITE_FULL错误码.
 

 

 

创建数据表格,设置主键自增
创建数据库时,启用主键自增加特性
Create table testTable (id INTEGER PRIMARY KEY AUTOINCREMENT,。。。。
注意事项:设置主键自增时(AUTOINCREMENT),主键类型必须是INTEGER,不能使用INT,否则会报错。
插入数据后,获取自增的主键值
QSqlQuery::exec(“SELECT last_insert_rowid()”);
QSqlQuery::next();
int id = QSqlQuery::value(0).toInt(&ok);
或者使用
QSqlQuery::lastInsertId()).toInt();
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值