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 仍為 實驗性質,因此可能會變更。