预测下一个自动插入的行ID(SQLite)

foo*_*bar 15 database sqlite

我试图找到是否有一种可靠的方法(使用SQLite)在插入之前找到要插入的下一行的ID .我需要将id用于另一个insert语句,但是没有选择立即插入并获取下一行.

预测下一个id就像获取最后一个ID并添加一个一样简单吗?这是保证吗?

编辑:更多推理...我无法立即插入,因为插入可能最终被用户取消.用户将进行一些更改,SQL语句将被存储,用户可以从中保存(一次插入所有行)或取消(不更改任何内容).在程序崩溃的情况下,所需的功能是没有任何改变.

小智 23

试试SELECT * FROM SQLITE_SEQUENCE WHERE name='TABLE';.这将包含一个字段seq,该字段是所选表的最大数字.将1添加到此值以获取下一个ID.

另请参阅SQLite Autoincrement文章,该文章来自上述信息.

干杯!


Eev*_*vee 15

一次性删除或提交一系列数据库操作正是交易的目的所在.查询BEGIN;用户之前就开始摆弄和COMMIT;一旦他/她的完成.您可以保证应用所有更改(如果您提交)或一切都被废弃(如果您查询ROLLBACK;,程序崩溃,电源熄灭等).一旦你从数据库中读取数据,你也可以保证在交易结束之前数据是好的,这样你就可以抓住MAX(id)任何你想要的东西而不用担心竞争条件.

http://www.sqlite.org/lang_transaction.html