int sqlite3changeset_old( sqlite3_changeset_iter *pIter, /* Changeset iterator */ int iVal, /* Column number */ sqlite3_value **ppValue /* OUT: Old value (or NULL pointer) */ );
Аргументом pIter, переданным к этой функции, может быть iterator, переданный обработчику конфликта sqlite3changeset_apply(), или iterator, созданный sqlite3changeset_start(). В последнем случае новое обращение к sqlite3changeset_next() должно возвратить SQLITE_ROW. Кроме того, это можно вызвать только, если тип изменения, на которое в настоящее время указывает iterator, является SQLITE_DELETE или SQLITE_UPDATE. Иначе эта функция возвращает SQLITE_MISUSE и ставит *ppValue = NULL.
iVal должен быть больше или равным 0, но меньше, чем количество колонок в таблице, затронутой текущим изменением. Иначе возвращен SQLITE_RANGE и *ppValue = NULL.
Если успешно, эта функция устанавливает указатель *ppValue на защищенный объект sqlite3_value, содержащий значение iVal от вектора первоначальных значений строки, сохраненных как часть изменения UPDATE или DELETE и вернет SQLITE_OK. Название функции происходит от того, что это подобно столбцам "old.*", доступным, чтобы обновить или удалить триггеры
Если некоторая другая ошибка происходит (например, условие OOM), код ошибки SQLite возвращен, и *ppValue установлен в NULL.