RussianLDP Рейтинг@Mail.ru
WebMoney: 
WMZ Z294115950220 
WMR R409981405661 
WME E134003968233 
Visa 
4274 3200 2453 6495 

Small. Fast. Reliable.
Choose any three.

SQLite C Interface

Сделайте запись образа базы данных

int sqlite3_snapshot_get(sqlite3 *db, const char *zSchema,
                         sqlite3_snapshot **ppSnapshot);

sqlite3_snapshot_get(D,S,P) пытается заставить новый объект sqlite3_snapshot сделать запись текущего состояния схемы S в соединении с базой данных D. При успехе sqlite3_snapshot_get(D,S,P) пишет указатель на недавно созданный объект sqlite3_snapshot в *P и вернет SQLITE_OK. Если нет уже прочитанной транзакции, открытой на схеме S, когда эта функция вызвана, она открыта автоматически.

Следующее должно быть верным для этой функции, чтобы она работала. Если какое-либо из следующих заявлений ложно, когда вызывают sqlite3_snapshot_get(), SQLITE_ERROR возвращен. Окончательное значение *P не определено в этом случае.

  • Обработчик базы данных не должен быть в autocommit mode.

  • Схема S соединения с базой данных D должна быть базой данных в режиме WAL.

  • Не должно быть транзакции записи, открытой на схеме S соединения с базой данных D.

  • Одна или более транзакций должны быть написаны в текущий wal-файл после того, как это было создано на диске (любой связью). Это означает, что образ не может быть немедленно взят на базе данных в режиме wal без wal-файла после того, как это сначала открыто. По крайней мере одна транзакция должна быть написана сначала.

Эта функция может также возвратить SQLITE_NOMEM. Если это вызывают с обработчиком базы данных в режиме autocommit, но происходит сбой по некоторой другой причине, открыта ли транзакция на схеме S, не определено.

Объект sqlite3_snapshot, возвращенный от успешного вызова sqlite3_snapshot_get(), должен быть освобожден, используя sqlite3_snapshot_free(), чтобы избежать утечки памяти.

sqlite3_snapshot_get() доступен только когда применен выбор времени компиляции SQLITE_ENABLE_SNAPSHOT.