int sqlite3changeset_op( sqlite3_changeset_iter * pIter,/ *迭代器对象* / const char ** pzTab,/ * OUT:指向表名的指针* / int * pnCol,/ * OUT:表中的列数* / int * pOp,/ * OUT:SQLITE_INSERT,DELETE或UPDATE * / int * pbIndirect / * OUT:对于“间接”更改为True * / );
传递给该功能的参数PITER可以是由传递给一个冲突处理程序的迭代器)sqlite3changeset_apply(或通过创建一个迭代()sqlite3changeset_start。在后一种情况下,对sqlite3changeset_next()的最新调用必须返回SQLITE_ROW。如果不是这种情况,则此函数返回SQLITE_MISUSE。
参数pOp,pnCol和pzTab不能为NULL。返回时,通过这些指针设置三个输出:
* pOp设置为SQLITE_INSERT,SQLITE_DELETE或SQLITE_UPDATE之一,具体取决于迭代器当前指向的更改类型;
* pnCol设置为受更改影响的表中的列数;和
* pzTab设置为指向一个以nul终止的utf-8编码的字符串,该字符串包含受当前更改影响的表的名称。缓冲区保持有效,直到在迭代器上调用sqlite3changeset_next()或冲突处理程序函数返回为止。
如果pbIndirect不为NULL,则如果更改是间接更改,则* pbIndirect设置为true(1),否则设置为false(0)。有关直接和间接更改的说明,请参见sqlite3session_indirect()的文档 。
如果未发生错误,则返回SQLITE_OK。如果确实发生错误,则返回SQLite错误代码。在这种情况下,可能不信任输出变量的值。