Small. Fast. Reliable. Choose any three.
Session Module C Interface
Константы, переданные обработчику конфликта
#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, если строка
с необходимыми областями PRIMARY KEY присутствует в базе данных, но одна или
несколько других (не первичный ключ) полей, измененные обновлением,
не содержат ожидаемые значения "before".
Противоречивая строка в этом случае является строкой базы данных с
соответствующим первичным ключом.
- SQLITE_CHANGESET_NOTFOUND
- Обработчик конфликта вызван с CHANGESET_NOTFOUND как второй аргумент,
обрабатывая изменение DELETE или UPDATE, если строка
с необходимыми областями PRIMARY KEY не присутствует в базе данных.
В этом случае нет никакой противоречивой строки. Результаты
sqlite3changeset_conflict() API не определены.
- SQLITE_CHANGESET_CONFLICT
- CHANGESET_CONFLICT передается как второй аргумент обработчику конфликта,
обрабатывая изменение INSERT, если операция привела бы к двойным
значениям первичного ключа.
Противоречивая строка в этом случае это строка базы данных с
соответствующим первичным ключом.
- SQLITE_CHANGESET_FOREIGN_KEY
- Если обработка внешнего ключа позволена, и применение changeset оставляет
базу данных в состоянии , содержащем нарушения внешнего ключа, обработчик
конфликта вызван с CHANGESET_FOREIGN_KEY как второй аргумент точно однажды
перед тем, как changeset передается.
Если обработчик конфликта возвращает CHANGESET_OMIT, изменения, включая те,
которые вызвали ограничительное нарушение внешнего ключа, передаются.
Если это возвращает CHANGESET_ABORT, changeset отменен.
Никакая информация о строке не обеспечивается. Единственная функция,
которая может обратиться к поставляемому дескриптору sqlite3_changeset_iter,
это sqlite3changeset_fk_conflicts().
- SQLITE_CHANGESET_CONSTRAINT
- Если какое-либо другое ограничительное нарушение происходит, применяя
изменение (то есть, UNIQUE, CHECK или NOT NULL),
обработчик конфликта вызван с CHANGESET_CONSTRAINT как второй аргумент.
В этом случае нет никакой конфликтной строки. Результаты
sqlite3changeset_conflict() API не определены.
|