Small. Fast. Reliable.
Choose any three.

SQLite C Interface

Determine If Virtual Table Column Access Is For UPDATE

int sqlite3_vtab_nochange(sqlite3_context*);

If the sqlite3_vtab_nochange(X) routine is called within the xColumn method of a virtual table, then it returns true if and only if the column is being fetched as part of an UPDATE operation during which the column value will not change. Applications might use this to substitute a return value that is less expensive to compute and that the corresponding xUpdate method understands as a "no-change" value.

If the xColumn method calls sqlite3_vtab_nochange() and finds that the column is not changed by the UPDATE statement, then the xColumn method can optionally return without setting a result, without calling any of the sqlite3_result_xxxxx() interfaces. In that case, sqlite3_value_nochange(X) will return true for the same column in the xUpdate method.

See also lists of Objects, Constants, and Functions.