Write-Ahead Log Commit Hook
Write-Ahead Log Commit Hook
void *sqlite3_wal_hook(
sqlite3*,
int(*)(void *,sqlite3*,const char*,int),
void*
sqlite3_wal_hook()函数用于注册每次数据以wal模式提交给数据库时调用的回调。
在提交发生后,由SQLite调用该回调,并释放数据库上的关联写锁,以便实现可根据需要读取,写入或检查数据库。
调用时传递给回调函数的第一个参数是注册回调时传递给sqlite3_wal_hook()的第三个参数的副本。第二个是数据库句柄的副本。第三个参数是写入数据库的名称 - “main”或ATTACH-ed数据库的名称。第四个参数是当前在预写日志文件中的页数,包括刚刚提交的页数。
回调函数通常应该返回SQLITE_OK。如果返回错误代码,那么该错误将通过SQLite代码库传播回来,以致导致回调的语句报告错误,尽管提交仍会发生。如果回调返回SQLITE_ROW或SQLITE_DONE,或者它返回的值与任何有效的SQLite错误代码都不相符,则结果是未定义的。
单个数据库句柄一次最多可以注册一个预写日志回调。调用sqlite3_wal_hook()会替换之前注册的预写日志回调。请注意,sqlite3_wal_autocheckpoint()接口和wal_autocheckpoint编译指示都会调用sqlite3_wal_hook(),并会覆盖之前的任何sqlite3_wal_hook()设置。
SQLite is in the Public Domain.