我在多线程应用程序中使用sqlite3数据库。 (库已正确编译并设置为线程安全模式)。
执行类型insert into table1 select from table2
的语句后,我想检查语句是否在table1中插入了一些行。
在这两种情况下,sqlite3_step()
的执行都会返回SQLITE_DONE
。
查看sqlite3_changes()函数的描述,它看起来正是我需要的,其描述中有两个令人烦恼的问题:
它不是在语句上,而是在我在所有线程中使用的数据库连接上。
根据功能描述,它似乎不是线程安全的:
如果一个单独的线程在sqlite3_changes()运行时对同一个数据库连接进行更改,则返回的值是不可预测的,没有意义。
那么,这个函数线程是否安全?有没有办法在语句的基础上获取插入行的数量,而不是基于连接?