小巧。快速。可靠。
選擇三項。

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

另請參閱 物件常數函式 清單。