在线文档教程
Sqlite
C界面 | C Interface

Start a read transaction on an historical snapshot

Start a read transaction on an historical snapshot

int sqlite3_snapshot_open( sqlite3 *db, const char *zSchema, sqlite3_snapshot *pSnapshot

重要提示:该界面是实验性的,如有更改,恕不另行通知。

sqlite3_snapshot_open(D,S,P) 接口为数据库连接D的模式S启动读取事务,以使读取事务引用历史快照P,而不是对数据库的最新更改。sqlite3_snapshot_open()接口在成功时返回SQLITE_OK,如果失败则返回相应的错误代码。

为了成功,对sqlite3_snapshot_open(D,S,P)的调用必须是BEGIN之后的第一个将模式S置于自动提交模式之外的操作。换句话说,模式S当前不能在sqlite3_snapshot_open(D,S,P)的事务中工作,但数据库连接D必须超出自动提交模式。如果快照被检查点覆盖,快照将无法打开。如果数据库连接D不知道模式S的数据库文件处于WAL模式,则对sqlite3_snapshot_open(D,S,P)的调用将失败。如果数据库连接上没有先前的I/O ,或者数据库连接上最近的I / O之后数据库进入了WAL模式,则数据库连接可能不知道数据库文件处于WAL模式。(提示: 对新打开的数据库连接运行 "PRAGMA application_id " 以使其可以使用快照。)

sqlite3_snapshot_open()接口仅在使用SQLITE_ENABLE_SNAPSHOT编译时选项时可用。