Obtain The Current Operation From A Changeset Iterator
从变更集Iterator获取当前操作
int sqlite3changeset_op(
sqlite3_changeset_iter *pIter, /* Iterator object */
const char **pzTab, /* OUT: Pointer to table name */
int *pnCol, /* OUT: Number of columns in table */
int *pOp, /* OUT: SQLITE_INSERT, DELETE or UPDATE */
int *pbIndirect /* OUT: True for an 'indirect' change */
传递给此函数的pIter参数可以是由sqlite3changeset_apply()传递给冲突处理程序的迭代器,也可以是由sqlite3changeset_start()创建的迭代器。在后一种情况下,最近对sqlite3changeset_next()的调用必须返回SQLITE_ROW。如果不是这种情况,这个函数返回SQLITE_MISUSE。
如果参数pzTab不为NULL,则将* pzTab设置为指向一个以nul结尾的utf-8编码字符串,其中包含受当前更改影响的表的名称。缓冲区保持有效,直到在迭代器上调用sqlite3changeset_next()或直到冲突处理函数返回。如果pnCol不为NULL,则将* pnCol设置为受该更改影响的表中的列数。如果pbIncorrect不为NULL,则如果更改是间接更改,则* pbIndirect设置为true(1),否则设置为false(0)。有关直接和间接更改的说明,请参阅sqlite3session_indirect()的文档。最后,如果pOp不为NULL,则根据迭代器当前指向的更改类型,将* pOp设置为SQLITE_INSERT,SQLITE_DELETE或SQLITE_UPDATE之一。
如果没有发生错误,则返回SQLITE_OK。如果发生错误,则返回SQLite错误代码。在这种情况下,输出变量的值可能不可信。