Spec-Zone.ru › SQLite

Постоянные значения, передаваемые обработчику конфликтов

#define SQLITE_CHANGESET_DATA        1
#define SQLITE_CHANGESET_NOTFOUND    2
#define SQLITE_CHANGESET_CONFLICT    3
#define SQLITE_CHANGESET_CONSTRAINT  4
#define SQLITE_CHANGESET_FOREIGN_KEY 5

Значения, которые могут передаваться в качестве второго аргумента обработчику конфликтов.

SQLITE_CHANGESET_DATA
Обработчик конфликтов вызывается со значением CHANGESET_DATA в качестве второго аргумента при обработке изменения DELETE или UPDATE, если строка с необходимыми полями первичного ключа присутствует в базе данных, но одно или несколько других полей (не являющихся полями первичного ключа), изменённых в ходе обновления, не содержат ожидаемых значений "до" обновления.

В этом случае конфликтная строка — это строка базы данных с соответствующим первичным ключом.

SQLITE_CHANGESET_NOTFOUND
Обработчик конфликтов вызывается со значением CHANGESET_NOTFOUND в качестве второго аргумента при обработке изменения DELETE или UPDATE, если строка с необходимыми полями первичного ключа отсутствует в базе данных.

В этом случае конфликтной строки нет. Результаты вызова API sqlite3changeset_conflict() не определены.

SQLITE_CHANGESET_CONFLICT
Значение CHANGESET_CONFLICT передаётся в качестве второго аргумента обработчику конфликтов при обработке изменения INSERT, если операция приведёт к дублированию значений первичного ключа.

В этом случае конфликтная строка — это строка базы данных с соответствующим первичным ключом.

SQLITE_CHANGESET_FOREIGN_KEY
Если обработка внешних ключей включена, и применение набора изменений оставляет базу данных в состоянии, содержащем нарушения внешних ключей, обработчик конфликтов вызывается со значением CHANGESET_FOREIGN_KEY в качестве второго аргумента ровно один раз перед подтверждением набора изменений. Если обработчик конфликтов возвращает CHANGESET_OMIT, изменения, в том числе те, которые вызвали нарушение ограничения внешнего ключа, подтверждаются. В противном случае, если он возвращает CHANGESET_ABORT, набор изменений отменяется.

Информация о текущей или конфликтной строке не предоставляется. Единственная функция, которую можно вызвать на предоставленном обработчике sqlite3_changeset_iter, это sqlite3changeset_fk_conflicts().

SQLITE_CHANGESET_CONSTRAINT
Если при применении изменения происходит любое другое нарушение ограничения (например, UNIQUE, CHECK или NOT NULL), обработчик конфликтов вызывается со значением CHANGESET_CONSTRAINT в качестве второго аргумента.

В этом случае конфликтной строки нет. Результаты вызова API sqlite3changeset_conflict() не определены.

См. также списки объектов, постоянных значений и функций.

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

Spec-Zone.ru

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