Spec-Zone.ru › SQLite

Уведомления о подтверждении и откате транзакций

void *sqlite3_commit_hook(sqlite3*, int(*)(void*), void*);
void *sqlite3_rollback_hook(sqlite3*, void(*)(void *), void*);

Интерфейс sqlite3_commit_hook() регистрирует функцию обратного вызова, которая вызывается всякий раз, когда транзакция подтверждается. Любой обратный вызов, установленный предыдущим вызовом sqlite3_commit_hook() для того же соединения с базой данных, переопределяется. Интерфейс sqlite3_rollback_hook() регистрирует функцию обратного вызова, которая вызывается всякий раз, когда транзакция отменяется. Любой обратный вызов, установленный предыдущим вызовом sqlite3_rollback_hook() для того же соединения с базой данных, переопределяется. Аргумент pArg передаётся в обратный вызов. Если обратный вызов функции обратного вызова при подтверждении возвращает ненулевое значение, то подтверждение преобразуется в отмену.

Функции sqlite3_commit_hook(D,C,P) и sqlite3_rollback_hook(D,C,P) возвращают аргумент P из предыдущего вызова той же функции для того же соединения с базой данных D или NULL для первого вызова каждой функции для D.

Обратные вызовы подтверждения и отмены не являются реентерабельными. Реализация обратного вызова не должна выполнять никаких действий, которые изменят соединение с базой данных, вызвавшее обратный вызов. Любые действия по изменению соединения с базой данных должны быть отложены до завершения вызова sqlite3_step(), который инициировал обратный вызов подтверждения или отмены в первую очередь. Обратите внимание, что выполнение других SQL-запросов, включая SELECT-запросы, или просто вызов sqlite3_prepare_v2() и sqlite3_step() повлияет на соединения с базой данных в контексте «изменения» в данном абзаце.

Регистрация функции NULL отключает обратный вызов.

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

В целях этой API считается, что транзакция была отменена, если выполняется явное оператор «ROLLBACK», или возникает ошибка или ограничение, вызывающее неявную отмену. Обратный вызов отмены не вызывается, если транзакция автоматически отменяется из-за закрытия соединения с базой данных.

См. также интерфейс sqlite3_update_hook().

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

SQLite is in the Public Domain.
https://sqlite.org/c3ref/commit_hook.html

Spec-Zone.ru

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