Генерация набора исправлений из объекта сессии
int sqlite3session_patchset( sqlite3_session *pSession, /* Session object */ int *pnPatchset, /* OUT: Size of buffer at *ppPatchset */ void **ppPatchset /* OUT: Buffer containing patchset */ );
Различия между набором исправлений и набором изменений заключаются в следующем:
- Записи DELETE содержат только поля первичного ключа. Исходные значения других полей опущены.
- Исходные значения любых измененных полей опускаются из записей UPDATE.
Объект набора исправлений может быть использован с актуальными версиями всех функций API sqlite3changeset_xxx, за исключением sqlite3changeset_invert(), которая возвращает SQLITE_CORRUPT, если ей передается набор исправлений. Аналогично, попытка использовать набор исправлений с устаревшими версиями API sqlite3changeset_xxx также вызывает ошибку SQLITE_CORRUPT.
Поскольку поля "old.*" без первичного ключа опущены, конфликты SQLITE_CHANGESET_DATA не могут быть обнаружены или сообщены, если набор исправлений передается в API sqlite3changeset_apply(). Другие типы конфликтов работают так же, как и для наборов изменений.
Изменения в наборе исправлений упорядочены так же, как и для наборов изменений, сгенерированных функцией sqlite3session_changeset() (т. е. все изменения для одной таблицы сгруппированы вместе, таблицы отображаются в порядке, в котором они были подключены к объекту сессии).
См. также списки Объектов, Констант и Функций.
SQLite is in the Public Domain.
https://sqlite.org/session/sqlite3session_patchset.html