В настоящее время я использую метод ниже, чтобы получить идентификатор последней вставленной строки.
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 может выполнять только одну операцию за один раз (или я так слышал), будет ли возможно для одного экземпляра клиента вернуть идентификатор строки записи, которая была вставленадругой экземпляр?
Наконец, есть ли лучший способ получить последний вставленный идентификатор строки?