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

Session 模块 C 接口

创建迭代器遍历变更集

int sqlite3changeset_start(
  sqlite3_changeset_iter **pp,    /* OUT: New changeset iterator handle */
  int nChangeset,                 /* Size of changeset blob in bytes */
  void *pChangeset                /* Pointer to blob containing changeset */
);
int sqlite3changeset_start_v2(
  sqlite3_changeset_iter **pp,    /* OUT: New changeset iterator handle */
  int nChangeset,                 /* Size of changeset blob in bytes */
  void *pChangeset,               /* Pointer to blob containing changeset */
  int flags                       /* SESSION_CHANGESETSTART_* flags */
);

创建一个用于遍历变更集内容的迭代器。如果成功,则 *pp 被设置为指向迭代器句柄,并返回 SQLITE_OK。否则,如果发生错误,则 *pp 被设置为零,并返回一个 SQLite 错误代码。

以下函数可用于推进和查询由此函数创建的变更集迭代器

调用者有责任最终通过将迭代器传递给 sqlite3changeset_finalize() 来销毁它。包含变更集的缓冲区 (pChangeset) 必须在迭代器销毁后保持有效。

假设变更集 Blob 是由 sqlite3session_changeset()sqlite3changeset_concat()sqlite3changeset_invert() 函数中的一个创建的,则变更集内应用于单个表的变更都会分组在一起。这意味着当应用程序使用由此函数创建的迭代器遍历变更集时,所有与单个表相关的变更都会连续访问。迭代器不会访问应用于表 X 的变更,然后访问表 Y 的变更,之后再访问表 X 的另一个变更。

sqlite3changeset_start_v2() 及其流式等效项的行为可以通过将 支持的标志 的组合作为第 4 个参数传递来修改。

请注意,sqlite3changeset_start_v2() API 仍然处于实验阶段,因此可能会发生变化。

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