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

会话模块 C 接口

sqlite3changeset_apply_v2 的标志

#define SQLITE_CHANGESETAPPLY_NOSAVEPOINT   0x0001
#define SQLITE_CHANGESETAPPLY_INVERT        0x0002
#define SQLITE_CHANGESETAPPLY_IGNORENOOP    0x0004
#define SQLITE_CHANGESETAPPLY_FKNOACTION    0x0008

以下标志可以通过第 9 个参数传递给 sqlite3changeset_apply_v2sqlite3changeset_apply_v2_strm

SQLITE_CHANGESETAPPLY_NOSAVEPOINT
通常,会话模块将单个调用 apply_v2() 或 apply_v2_strm() 执行的所有操作都包含在一个 SAVEPOINT 中。如果成功应用了 changeset 或 patchset,则提交 SAVEPOINT;如果发生错误,则回滚 SAVEPOINT。指定此标志会导致会话模块省略此保存点。在这种情况下,如果调用者在调用 apply_v2() 时有一个打开的事务或保存点,它可能会通过回滚来还原部分应用的 changeset。

SQLITE_CHANGESETAPPLY_INVERT
在应用 changeset 之前将其反转。这等同于在应用之前使用 sqlite3changeset_invert() 反转 changeset。为 patchset 指定此标志是错误的。

SQLITE_CHANGESETAPPLY_IGNORENOOP
对于不会实际修改数据库的任何更改,即使它们被应用,也不调用冲突处理程序回调。具体来说,这意味着对于以下情况不会调用冲突处理程序:

SQLITE_CHANGESETAPPLY_FKNOACTION
如果设置了此标志,则目标数据库中的所有外键约束的行为就像它们是用“ON UPDATE NO ACTION ON DELETE NO ACTION”声明的一样,即使它们实际上是 CASCADE、RESTRICT、SET NULL 或 SET DEFAULT。

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