Small. Fast. Reliable.
Choose any three.

会话模块C接口

将表之间的差异加载到会话中

int sqlite3session_diff(
  sqlite3_session * pSession,
  const char * zFromDb,
  const char * zTbl,
  字符** pzErrMsg
);

如果尚未将其附加到作为第一个参数传递的会话对象,则此函数以与sqlite3session_attach()函数相同的方式附加表zTbl 。如果zTbl不存在或没有主键,则此功能为无操作(但不会返回错误)。

参数zFromDb必须是连接到与会话对象相同的数据库句柄的数据库的名称(“ main”,“ temp”等),该会话对象包含与通过此函数连接到会话的表兼容的表。如果表符合以下条件,则认为该表是兼容的:

如果表不兼容,则返回SQLITE_SCHEMA。如果表兼容,但没有任何PRIMARY KEY列,则不是错误,但不会将任何更改添加到会话对象。与其他会话API一样,没有PRIMARY KEY的表将被忽略。

此函数向会话对象添加了一组更改,可用于更新数据库zFrom中的表(将此称为“从表”),以便其内容与附加到会话对象的表相同(称为此)。 “到表格”)。具体来说:

为了明确起见,如果先调用此函数,然后使用sqlite3session_changeset()构造一个变更集,则将该变更集应用于数据库z之后,两个兼容表的内容将相同。

如果数据库zFrom不存在或不包含所需的兼容表,则会发生错误。

如果操作成功,则返回SQLITE_OK。否则,为SQLite错误代码。在这种情况下,如果参数pzErrMsg不为NULL,则可以将* pzErrMsg设置为指向包含英语错误消息的缓冲区。调用者有责任使用sqlite3_free()释放此缓冲区。

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