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_open(sqlite3 *db, const char *zSchema,
                          sqlite3_snapshot *pSnapshot);

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

Чтобы добиться успеха, соединение с базой данных не должно быть в режиме autocommit, когда вызван sqlite3_snapshot_open(D,S,P). Если уже есть транзакция, открытая на схеме S, то у обработчика базы данных не должно быть активных запросов (операторы SELECT, которые были переданы to 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, если не было никакого предшествующего I/O на том соединении с базой данных или если база данных попала в режим WAL после нового I/O на соединении с базой данных. Выполните "PRAGMA application_id" для недавно открытого соединения с базой данных, чтобы применять образы.

sqlite3_snapshot_open() работает только при использовании опции времени компиляции SQLITE_ENABLE_SNAPSHOT.