在线文档教程
Sqlite
C界面 | C Interface

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.