sqlite3_busy_handler
Этот вызов позволяет указать пользовательскую функцию, которая будет вызываться в случае, если файл баз данных был заблокирован другим процессом или потоком. Если указатель на обработчик равен NULL, то
sqlite3_exec() вернет SQLITE_BUSY немедленно при доступе к заблокированной таблице. Если обработчик указан,
sqlite3_exec() вызовет его с двумя аргументами. Второй аргумент – предыдущее количество вызовов обработчика, при доступе к заблокированному ресурсу. Если обработчик вернул ноль, то
sqlite3_exec() вернет SQLITE_BUSY, в противном случае,
sqlite3_exec() будет пытаться открыть таблицу в цикле.
Обработчик по умолчанию – NULL.
Sqlite реентерабельна, и в обработчике возможно выполнять запросы. (Не совсем понятно, зачем это может пригодиться, но в теории это возможно) Обработчик не должен закрывать файл базы данных. Закрытие базы из обработчика вызовет удаление структур вышестоящего запроса и может привести к аварийному завершению.
Ссылок на эту страницу нет