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

Obtain new.* Values From A Changeset Iterator

代码语言:javascript
复制
int sqlite3changeset_new(
  sqlite3_changeset_iter *pIter,  /* Changeset iterator */
  int iVal,                       /* Column number */
  sqlite3_value **ppValue         /* OUT: New value (or NULL pointer) */
);

传递给此函数的 pIter 参数可以是由 sqlite3changeset_apply() 传递给冲突处理程序的迭代器,也可以是由 sqlite3changeset_start() 创建的迭代器。在后一种情况下,最近对 sqlite3changeset_next() 的调用必须返回 SQLITE_ROW 。而且,只有在迭代器当前指向的变化类型是 SQLITE_UPDATE 或 SQLITE_INSERT 时才可以调用它。否则,该函数返回 SQLITE_MISUSE 并将 * ppValue 设置为 NULL 。

参数 iVal 必须大于或等于0,并小于受当前更改影响的表中的列数。否则,返回 SQLITE_RANGE 并将 * ppValue 设置为 NULL 。

如果成功,此函数将 * ppValue 设置为指向受保护的 sqlite3_value 对象,该对象包含作为 UPDATE 或 INSERT 更改的一部分存储的新行值向量中的 iVal 值,并返回 SQLITE_OK 。如果更改是 UPDATE ,并且不包含请求列的新值,则 * ppValue 设置为 NULL ,并返回 SQLITE_OK 。该函数的名称来自这一点,它与用于更新或删除触发器的 “new.*” 列类似。

如果发生其他错误(例如OOM条件),则返回SQLite错误代码并将* ppValue设置为NULL。

扫码关注腾讯云开发者

领取腾讯云代金券