Spec-Zone.ru › SQLite

Инвертирование набора изменений

int sqlite3changeset_invert(
  int nIn, const void *pIn,       /* Input changeset */
  int *pnOut, void **ppOut        /* OUT: Inverse of input */
);

Эта функция используется для «инвертирования» объекта набора изменений. Применение инвертированного набора изменений к базе данных отменяет эффект применения исходного набора изменений. В частности:

  • Каждое изменение DELETE заменяется на INSERT, и
  • Каждое изменение INSERT заменяется на DELETE, и
  • Для каждого изменения UPDATE значения old.* и new.* меняются местами.

Эта функция не изменяет порядок, в котором изменения появляются в наборе изменений. Она лишь изменяет смысл каждого отдельного изменения.

Если функция выполнена успешно, указатель на буфер, содержащий инвертированный набор изменений, хранится в *ppOut, размер этого буфера хранится в *pnOut, и возвращается SQLITE_OK. Если произошла ошибка, *pnOut и *ppOut обнуляются, и возвращается код ошибки SQLite.

Ответственность за вызов sqlite3_free() на указателе *ppOut для освобождения выделенного буфера после успешного вызова этой функции лежит на вызывающей стороне.

ПРЕДУПРЕЖДЕНИЕ/TODO: В настоящее время эта функция предполагает, что входные данные являются корректным набором изменений. Если это не так, результаты не определены.

См. также списки Объектов, Констант и Функций.

SQLite is in the Public Domain.
https://sqlite.org/session/sqlite3changeset_invert.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API