是sqlite的last_insert_rowidprimefaces?

我使用node.js sqlite3来操纵数据。 我使用这些代码插入数据到数据库,并获得插入ID:

db.run("INSERT INTO myTable (name) VALUES ('test')"); db.get("SELECT last_insert_rowid() as id", function (err, row) { console.log('Last inserted id is: ' + row['id']); }); 

我觉得这不太稳定。 我的数据库连接总是打开。 当我的服务器在来自客户端的多个同时连接上提供此代码时, SELECT last_insert_rowid()是否正确地获取id? 是sqlite的last_insert_rowidprimefaces? 谢谢。

通过文档sqlite3数据库#运行(SQL,[参数,…],[callback]),你可以从callbacklastID

 try{ db.run("INSERT INTO TABLE_NAME VALUES (NULL,?,?,?,?)",data1,data2,data3,data4,function(err){ if(err){ callback({"status":false,"val":err}); }else{ console.log("val "+this.lastID); callback({"status":true,"val":""}); } }); }catch(ex){ callback({"status":false,"val":ex}); } 

this.lastID返回最后插入的行id 通过文档sqlite3数据库 #run (sql,[param,…],[callback])

last_insert_rowid()返回此连接上最后一个插入操作的ROWID。

如果函数是从同一数据库连接上的多个线程调用的,则结果是不可预知的。

文档(用于C API): https : //www.sqlite.org/c3ref/last_insert_rowid.html

如果不在多个线程之间共享数据库连接(会话)以进行并发插入,则这是安全的。 如果多个线程在同一个连接上插入,这是不安全的,也就是说你可能会得到一个ID或一个完全无效的ID。

This.data.lastID会给你最后插入的ID。