Spec-Zone.ru › SQLite

Начало транзакции чтения на историческом снимке

Интерфейс sqlite3_snapshot_open(D,S,P) либо запускает новую транзакцию чтения, либо обновляет существующую для схемы S подключения к базе данных D таким образом, что транзакция чтения ссылается на исторический снимок P, а не на последнее изменение в базе данных. Интерфейс sqlite3_snapshot_open() возвращает SQLITE_OK в случае успеха или соответствующий код ошибки в случае неудачи.

Для успеха подключение к базе данных не должно быть в режиме автоматического подтверждения при вызове sqlite3_snapshot_open(D,S,P). Если уже открыта транзакция чтения для схемы S, то у обработчика базы данных не должно быть активных запросов (запросов SELECT, которые были переданы в sqlite3_step(), но не sqlite3_reset() или sqlite3_finalize()). Возвращается SQLITE_ERROR, если какое-либо из этих условий нарушено, или если схема S не существует, или если объект снимка недействителен.

Вызов sqlite3_snapshot_open() не сможет открыть указанный снимок, если он был перезаписан с помощью точки восстановления. В этом случае возвращается SQLITE_ERROR_SNAPSHOT.

Если при вызове этой функции уже открыта транзакция чтения, то та же транзакция чтения остаётся открытой (на том же снимке базы данных), если возвращается SQLITE_ERROR, SQLITE_BUSY или SQLITE_ERROR_SNAPSHOT. Если возвращается другой код ошибки — например, SQLITE_PROTOCOL или код ошибки SQLITE_IOERR — то конечное состояние транзакции чтения неопределено. Если возвращается SQLITE_OK, то транзакция чтения теперь открыта на снимке базы данных P.

Вызов sqlite3_snapshot_open(D,S,P) завершится неудачей, если подключение к базе данных D не знает, что файл базы данных для схемы S находится в режиме WAL. Подключение к базе данных может не знать, что файл базы данных находится в режиме WAL, если не было предварительных операций ввода-вывода для этого подключения, или если база данных перешла в режим WAL после последней операции ввода-вывода для подключения. (Подсказка: Запустите «PRAGMA application_id» против недавно открытого подключения к базе данных, чтобы подготовить его к использованию снимков.)

Интерфейс sqlite3_snapshot_open() доступен только при использовании опции компиляции SQLITE_ENABLE_SNAPSHOT.

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

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

Spec-Zone.ru

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