小巧。快速。可靠。
三者选其二。

会话模块 C 接口

创建新的会话对象

int sqlite3session_create(
  sqlite3 *db,                    /* Database handle */
  const char *zDb,                /* Name of db (e.g. "main") */
  sqlite3_session **ppSession     /* OUT: New session object */
);

创建一个新的会话对象,并将其附加到数据库句柄 db。如果成功,则将指向新对象的指针写入 *ppSession 并返回 SQLITE_OK。如果发生错误,则 *ppSession 设置为 NULL 并返回 SQLite 错误代码(例如 SQLITE_NOMEM)。

可以创建多个附加到单个数据库句柄的会话对象。

使用此函数创建的会话对象应在关闭其附加到的数据库句柄之前使用 sqlite3session_delete() 函数删除。如果在删除会话对象之前关闭了数据库句柄,则调用任何会话模块函数(包括在会话对象上调用 sqlite3session_delete())的结果未定义。

由于会话模块使用 sqlite3_preupdate_hook() API,因此应用程序无法在附加了一个或多个会话对象的数据库句柄上注册预更新钩子。同样,也无法为已定义预更新钩子的数据库句柄创建会话对象。尝试执行任何这些操作的结果未定义。

会话对象将用于为数据库 zDb 中的表创建变更集,其中 zDb 为 "main"、"temp" 或附加数据库的名称。如果在创建会话对象时数据库 zDb 未附加到数据库,则不会发生错误。

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