1
我有一個程序用線程(根據用戶請求)處理數據庫。雖然存在一個問題:SQLite3線程安全的last_insert_rowid API(C++)
儘管不太可能,但例如在將用戶插入數據庫(他的詳細信息)並且我想要查找其標識符列值(int
)時可能會出現問題,使用sqlite3_int64 sqlite3_last_insert_rowid(sqlite*);
函數。
即使API一般是線程安全的,因爲我研究儘可能多的 - 如果可能另一個線程插入一行到相同的表後我插入我的出現問題,但之前我叫sqlite3_last_insert_row_id()
。我如何防止這種情況?我可以互斥所有數據庫訪問權限,但在目前階段這會很麻煩,這是唯一的方法嗎?
我也可以做一個事務sql查詢,但會有我想要的相同效果?