我试图找到是否有一种可靠的方法(使用SQLite)在插入之前找到要插入的下一行的ID .我需要将id用于另一个insert语句,但是没有选择立即插入并获取下一行.
预测下一个id就像获取最后一个ID并添加一个一样简单吗?这是保证吗?
编辑:更多推理...我无法立即插入,因为插入可能最终被用户取消.用户将进行一些更改,SQL语句将被存储,用户可以从中保存(一次插入所有行)或取消(不更改任何内容).在程序崩溃的情况下,所需的功能是没有任何改变.
试试SELECT * FROM SQLITE_SEQUENCE WHERE name='TABLE';
.这将包含一个字段seq
,该字段是所选表的最大数字.将1添加到此值以获取下一个ID.
另请参阅SQLite Autoincrement文章,该文章来自上述信息.
干杯!
一次性删除或提交一系列数据库操作正是交易的目的所在.查询BEGIN;
用户之前就开始摆弄和COMMIT;
一旦他/她的完成.您可以保证应用所有更改(如果您提交)或一切都被废弃(如果您查询ROLLBACK;
,程序崩溃,电源熄灭等).一旦你从数据库中读取数据,你也可以保证在交易结束之前数据是好的,这样你就可以抓住MAX(id)
任何你想要的东西而不用担心竞争条件.
http://www.sqlite.org/lang_transaction.html