SQLite C 接口
在事务中将缓存刷新到磁盘
int sqlite3_db_cacheflush(sqlite3*);
如果在调用sqlite3_db_cacheflush(D)接口时在数据库连接D 上打开写事务,则页面缓存中当前未使用的任何脏页都将写出到磁盘。如果活动 SQL 语句创建的数据库游标正在读取脏页,或者如果它是数据库文件的第 1 页(第 1 页始终“正在使用”),则脏页可能正在使用中。sqlite3_db_cacheflush(D)接口刷新所有模式的 缓存——“main”、“temp”和任何附加的数据库。
如果此函数需要在脏页刷新到磁盘之前获得额外的数据库锁,它会这样做。如果无法立即获得这些锁,并且配置了忙处理程序回调,则会以通常的方式调用它。如果仍然无法获得所需的锁,则跳过该数据库并尝试刷新属于下一个(如果有)数据库的任何脏页。如果因为无法获得锁而跳过任何数据库,但没有发生其他错误,则此函数返回 SQLITE_BUSY。
如果在将脏页刷新到磁盘时发生任何其他错误(例如 IO 错误或内存不足情况),则处理将被放弃并立即将 SQLite错误代码返回给调用者。
否则,如果没有错误发生,sqlite3_db_cacheflush()返回 SQLITE_OK。
此函数不设置数据库句柄错误代码或由sqlite3_errcode()和sqlite3_errmsg()函数返回的消息。