小巧、快速、可靠。
三者择其二。

SQLite C 接口

记录数据库快照

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

The sqlite3_snapshot_get(D,S,P) 接口尝试创建一个新的 sqlite3_snapshot 对象,该对象记录数据库连接 D 中模式 S 的当前状态。成功时,sqlite3_snapshot_get(D,S,P) 接口会将指向新创建的 sqlite3_snapshot 对象的指针写入 *P 并返回 SQLITE_OK。如果调用此函数时模式 S 上尚未打开读事务,则会自动打开一个事务。

此函数要成功,必须满足以下条件。如果 sqlite3_snapshot_get() 被调用时,以下任何一个语句为假,则返回 SQLITE_ERROR。在这种情况下,*P 的最终值是未定义的。

此函数也可能返回 SQLITE_NOMEM。如果它是在数据库句柄处于自动提交模式的情况下被调用,但由于其他原因而失败,则模式 S 上是否打开读事务是未定义的。

sqlite3_snapshot_get() 的成功调用返回的 sqlite3_snapshot 对象必须使用 sqlite3_snapshot_free() 释放,以避免内存泄漏。

仅当使用 SQLITE_ENABLE_SNAPSHOT 编译时选项时,sqlite3_snapshot_get() 接口才可用。

另请参阅 对象常量函数 列表。