Определить, предназначен ли доступ к виртуальному столбцу для UPDATE
int sqlite3_vtab_nochange(sqlite3_context*);
Если процедура sqlite3_vtab_nochange(X) вызывается в методе xColumn виртуальной таблицы virtual table, то она может вернуть значение true, если столбец извлекается в рамках операции UPDATE, при которой значение столбца не будет изменено. Реализация виртуальной таблицы может использовать этот намек, чтобы разрешить подстановку возвращаемого значения, которое дешевле вычислить, и которое соответствующий метод xUpdate понимает как значение «без изменений».
Если метод xColumn вызывает sqlite3_vtab_nochange() и определяет, что столбец не изменяется операцией UPDATE, то метод xColumn может необязательно вернуть значение без установки результата, не вызывая ни одну из функций sqlite3_result_xxxxx(). В этом случае, sqlite3_value_nochange(X) вернёт значение true для того же столбца в методе xUpdate.
Процедура sqlite3_vtab_nochange() является оптимизацией. Реализации виртуальных таблиц должны продолжать давать правильный ответ, даже если интерфейс sqlite3_vtab_nochange() всегда возвращает false. В текущей реализации интерфейс sqlite3_vtab_nochange() всегда возвращает false для расширенного оператора UPDATE FROM.
См. также списки Объектов, Констант и Функций.
SQLite is in the Public Domain.
https://sqlite.org/c3ref/vtab_nochange.html