2
的檢索ID我面對檢索最後添加的行ID的一般問題。問題是,我希望此操作儘可能原子化,以完全線程安全。我在SQLite周圍使用了ADO.NET wrapper。SQLite的 - 最後一排
這是我的研究:
SQLiteConnection
類提供了一個LastInsertRowId
屬性,它返回上次成功插入操作的RowId
。但是,如果某個線程had enough luck到LastInsertRowId
評估過程中的一些數據推到表,我會得到一些錯誤的ID(最有可能不是一個我在尋找)。- SQLite的維護稱爲
sqlite_sequence
表,其中存儲用於產生AUTOINCREMENT
鍵的值。我可以手動增加其中一個值,然後插入一行預定義的Id值(我在MySQL中使用存儲過程做這樣的事情)。問題是,如果我想這個解決方案是安全的,我不得不從這個表中,增量和更新作爲一個原子過程實施選擇,我不知道該怎麼做。 - SQLite的Android的API包含
insert
方法,它返回最後添加的行的ID,但我不能找到我使用包裝這樣的方法。
所以,問題是:如何在一個線程安全的方式 retreive最後添加的行的ID?