int sqlite3session_diff(sqlite3_session *pSession, const char *zFromDb, const char *zTbl, char **pzErrMsg);
Если это еще не присоединено к объекту сессии, переданному как первый аргумент, эта функция прилагает таблицу zTbl таким же образом, как функция sqlite3session_attach(). Если zTbl не существует или если у нее нет первичного ключа, эта функция не делает (но не возвращает ошибку).
zFromDb должно быть название базы данных ("main", "temp", ...) приложенной к тому же самому дескриптору базы данных как объект сессии, который содержит таблицу, совместимую с таблицей, приложенной к сессии этой функцией. Таблицу считают совместимой, если:
Если таблицы не совместимы, SQLITE_SCHEMA возвращен. Если таблицы совместимы, но не имеют никаких колонок PRIMARY KEY, это не ошибка, но никакие изменения не добавляются к объекту сессии. Как с другой сессией API, просто проигнорированы таблицы без PRIMARY KEY.
Эта функция добавляет ряд изменений объекта сессии, который мог использоваться, чтобы обновить таблицу в базе данных zFrom (назовите это "from-table") так, чтобы ее содержание совпало с таблицей, приложенной к объекту сессии (назовите это "to-table"):
Если эта функция вызвана и затем changeset построен с использованием sqlite3session_changeset(), то после применения этого changeset к базе данных zFrom содержание двух совместимых таблиц будет идентичным.
Это ошибка, если база данных zFrom не существует или не содержит необходимую совместимую таблицу.
Если операция успешна, SQLITE_OK возвращен. Иначе вернется код ошибки SQLite. В этом случае, если аргументом pzErrMsg не является NULL, *pzErrMsg может указать на буфер, содержащий английское языковое сообщение об ошибке. Обязанность вызывающего освободить этот буфер, используя sqlite3_free().