Small. Fast. Reliable.
Choose any three.

会话模块C接口

从变更集迭代器获取当前操作

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_INSERTSQLITE_DELETESQLITE_UPDATE之一,具体取决于迭代器当前指向的更改类型;

* pnCol设置为受更改影响的表中的列数;和

* pzTab设置为指向一个以nul终止的utf-8编码的字符串,该字符串包含受当前更改影响的表的名称。缓冲区保持有效,直到在迭代器上调用sqlite3changeset_next()或冲突处理程序函数返回为止。

如果pbIndirect不为NULL,则如果更改是间接更改,则* pbIndirect设置为true(1),否则设置为false(0)。有关直接和间接更改的说明,请参见sqlite3session_indirect()的文档 。

如果未发生错误,则返回SQLITE_OK。如果确实发生错误,则返回SQLite错误代码。在这种情况下,可能不信任输出变量的值。

另请参见 对象常量函数的列表