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。
参数 pOp、pnCol 和 pzTab 不能为 NULL。返回时,通过这些指针设置三个输出
*pOp 设置为 SQLITE_INSERT、SQLITE_DELETE 或 SQLITE_UPDATE 之一,具体取决于迭代器当前指向的更改类型;
*pnCol 设置为受更改影响的表中的列数;以及
*pzTab 设置为指向一个以 null 结尾的 utf-8 编码字符串,该字符串包含受当前更改影响的表的名称。该缓冲区保持有效,直到在迭代器上调用 sqlite3changeset_next() 或冲突处理程序函数返回。
如果 pbIndirect 不为 NULL,则如果更改是间接更改,则 *pbIndirect 设置为 true (1),否则设置为 false (0)。有关直接和间接更改的描述,请参阅 sqlite3session_indirect() 的文档。
如果未发生错误,则返回 SQLITE_OK。如果发生错误,则返回 SQLite 错误代码。在这种情况下,可能无法信任输出变量的值。