我目前使用以下方法获取最后插入行的ID。
Database.ExecuteNonQuery(query, parameters);
//if another client/connection inserts a record at this time,
//could the line below return the incorrect row ID?
int fileid = Convert.ToInt32(Database.Scalar("SELECT last_insert_rowid()"));
return fileid;
这种方法目前来看运行良好,但我不确定它是否完全可靠。
假设有两个客户端应用程序,每个应用程序都有自己独立的数据库连接,并在完全相同的时间调用上述服务器端方法。请记住,客户端线程并行运行,并且SQLite一次只能运行一个操作(或者我听说是这样),那么是否可能一个客户端实例返回由另一个实例插入的记录的行ID?
最后,是否有更好的方法获取最后插入的行ID?