小巧。快速。可靠。
三选二。

Session 模块 C 接口

从 Changeset 迭代器获取当前操作

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

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

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

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

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

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