int sqlite3changeset_old( sqlite3_changeset_iter *pIter, /* Changeset iterator */ int iVal, /* Column number */ sqlite3_value **ppValue /* OUT: Old value (or NULL pointer) */ );
傳遞給此函式的 pIter 參數可以是 sqlite3changeset_apply() 傳遞給衝突處理常式的疊代器,或是 sqlite3changeset_start() 建立的疊代器。在後者的情況下,最近一次呼叫 sqlite3changeset_next() 必須傳回 SQLITE_ROW。此外,只有當疊代器目前指向的變更類型為 SQLITE_DELETE 或 SQLITE_UPDATE 時,才可呼叫此函式。否則,此函式會傳回 SQLITE_MISUSE,並將 *ppValue 設為 NULL。
參數 iVal 必須大於或等於 0,且小於受目前變更影響的資料表欄位數。否則,會傳回 SQLITE_RANGE,並將 *ppValue 設為 NULL。
如果成功,此函式會將 *ppValue 設為指向受保護的 sqlite3_value 物件,其中包含 UPDATE 或 DELETE 變更中儲存的原始列值向量中的第 iVal 個值,並傳回 SQLITE_OK。此函式的名稱來自於這項功能類似於更新或刪除觸發器中可用的「old.*」欄位。
如果發生其他錯誤(例如 OOM 狀況),會傳回 SQLite 錯誤碼,並將 *ppValue 設為 NULL。