1
我有一个程序用线程(根据用户请求)处理数据库。虽然存在一个问题:SQLite3线程安全的last_insert_rowid API(C++)
尽管不太可能,但例如在将用户插入数据库(他的详细信息)并且我想要查找其标识符列值(int
)时可能会出现问题,使用sqlite3_int64 sqlite3_last_insert_rowid(sqlite*);
函数。
即使API一般是线程安全的,因为我研究尽可能多的 - 如果可能另一个线程插入一行到相同的表后我插入我的出现问题,但之前我叫sqlite3_last_insert_row_id()
。我如何防止这种情况?我可以互斥所有数据库访问权限,但在目前阶段这会很麻烦,这是唯一的方法吗?
我也可以做一个事务sql查询,但会有我想要的相同效果?