int sqlite3_trace_v2( sqlite3*, unsigned uMask, int(*xCallback)(unsigned,void*,void*,void*), void *pCtx );
sqlite3_trace_v2(D,M,X,P) 接口使用属性掩码 M 和上下文指针 P,针对数据库连接 D 注册一个跟踪回调函数 X。如果 X 回调为 NULL 或 M 掩码为零,则禁用跟踪。M 参数应该是零个或多个SQLITE_TRACE 常量的按位或组合。
每次调用 sqlite3_trace(D,X,P) 或 sqlite3_trace_v2(D,M,X,P) 都会覆盖(取消)之前对数据库连接 D 的所有 sqlite3_trace(D,X,P) 或 sqlite3_trace_v2(D,M,X,P) 的调用。每个数据库连接最多只能有一个跟踪回调。
只要发生掩码 M 中标识的任何事件,就会调用 X 回调。回调的整数值返回值目前被忽略,但这可能会在将来的版本中更改。回调实现应返回零以确保将来的兼容性。
跟踪回调会使用四个参数调用:callback(T,C,P,X)。T 参数是SQLITE_TRACE 常量之一,用于指示调用回调的原因。C 参数是上下文指针的副本。P 和 X 参数是指针,其含义取决于 T。
sqlite3_trace_v2() 接口旨在替换旧版接口sqlite3_trace() 和sqlite3_profile(),这两个接口均已弃用。