会话模块 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 未附加到数据库,则不是错误。