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

Session 模块 C 接口

从 Changeset 迭代器获取新的值

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_UPDATESQLITE_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。

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