首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Obtain The Current Operation From A Changeset Iterator

代码语言:javascript
复制
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错误代码。在这种情况下,输出变量的值可能不可信。

扫码关注腾讯云开发者

领取腾讯云代金券