Постоянные значения, передаваемые обработчику конфликтов
#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