SQLite C 接口

预写日志提交挂钩

void *sqlite3_wal_hook(
  sqlite3*,
  int(*)(void *,sqlite3*,const char*,int),
  void*
);

sqlite3_wal_hook()函数用于注册一个回调,每次在 wal 模式下将数据提交到数据库时都会调用该回调

在提交发生并释放数据库上的关联写锁后,SQLite 调用回调,因此实现可以根据需要读取、写入或检查数据库。

调用时传递给回调函数的第一个参数是注册回调时传递给 sqlite3_wal_hook() 的第三个参数的副本。第二个是数据库句柄的副本。第三个参数是写入的数据库的名称——“main”或ATTACH数据库的名称。第四个参数是预写日志文件中当前的页数,包括刚刚提交的页数。

回调函数通常应返回SQLITE_OK如果返回错误代码,该错误将通过 SQLite 代码库向上传播,导致引发回调的语句报告错误,尽管提交仍会发生。如果回调返回SQLITE_ROWSQLITE_DONE,或者如果它返回一个不对应于任何有效 SQLite 错误代码的值,则结果是未定义的。

单个数据库句柄一次最多可以注册一个预写日志回调。调用sqlite3_wal_hook()替换任何先前注册的预写日志回调。返回值是上一次调用的第三个参数的副本(如果有),或者为 0。请注意,sqlite3_wal_autocheckpoint()接口和 wal_autocheckpoint pragma都调用sqlite3_wal_hook()并将覆盖任何先前的sqlite3_wal_hook()设置。

另请参阅 对象常量函数的列表。