int sqlite3changeset_start( sqlite3_changeset_iter ** pp,/ * OUT:新的变更集迭代器句柄* / int nChangeset,/ *变更集blob的大小,以字节为单位* / 无效* pChangeset / *指向包含变更集的blob的指针* / ); int sqlite3changeset_start_v2( sqlite3_changeset_iter ** pp,/ * OUT:新的变更集迭代器句柄* / int nChangeset,/ *变更集blob的大小,以字节为单位* / void * pChangeset,/ *指向包含更改集的blob的指针* / int标志/ * SESSION_CHANGESETSTART_ *标志* / );
创建用于迭代变更集内容的迭代器。如果成功,则将* pp设置为指向迭代器句柄,并返回SQLITE_OK。否则,如果发生错误,则将* pp设置为零,并返回SQLite错误代码。
以下功能可用于推进和查询由此功能创建的变更集迭代器:
调用者有责任通过将迭代器传递给sqlite3changeset_finalize()来最终销毁该迭代器。包含变更集(pChangeset)的缓冲区必须保持有效,直到销毁迭代器为止。
假设变更集blob是由sqlite3session_changeset(),sqlite3changeset_concat()或 sqlite3changeset_invert()函数之一创建的,则变更 集中所有适用于单个表的更改都被分组在一起。这意味着当应用程序使用此函数创建的迭代器遍历变更集时,将连续访问与单个表相关的所有更改。迭代器没有机会访问表X的更改,然后再访问表Y的更改,然后再访问表X的另一个更改。
sqlite3changeset_start_v2()的行为及其流等效项可以通过将支持的标志的组合作为第四个参数进行修改 。
请注意,sqlite3changeset_start_v2()API仍处于试验阶段 ,因此可能会发生变化。