Small. Fast. Reliable.
Choose any three.

会话模块C接口

常量传递给冲突处理程序

#定义SQLITE_CHANGESET_DATA 1
#定义SQLITE_CHANGESET_NOTFOUND 2
#定义SQLITE_CHANGESET_CONFLICT 3
#定义SQLITE_CHANGESET_CONSTRAINT 4
#定义SQLITE_CHANGESET_FOREIGN_KEY 5

可以作为第二个参数传递给冲突处理程序的值。

SQLITE_CHANGESET_DATA
如果数据库中存在具有必需的PRIMARY KEY字段的行,但是更新执行了一个或多个其他(非主键)字段,则在处理DELETE或UPDATE更改时,将以CHANGESET_DATA作为第二个参数调用冲突处理程序。不包含预期的“之前”值。

在这种情况下,冲突的行是具有匹配主键的数据库行。

SQLITE_CHANGESET_NOTFOUND
如果数据库中不存在带有必需PRIMARY KEY字段的行,则在处理DELETE或UPDATE更改时,将以CHANGESET_NOTFOUND作为第二个参数调用冲突处理程序。

在这种情况下,没有冲突的行。调用sqlite3changeset_conflict()API的结果是不确定的。

SQLITE_CHANGESET_CONFLICT
如果操作将导致重复的主键值,则在处理INSERT更改时将CHANGESET_CONFLICT作为第二个参数传递给冲突处理程序。

在这种情况下,冲突的行是具有匹配主键的数据库行。

SQLITE_CHANGESET_FOREIGN_KEY
如果启用了外键处理,并且应用更改集会使数据库处于包含外键违例的状态,那么在提交更改集之前,将使用CHANGESET_FOREIGN_KEY作为第二个参数来调用冲突处理程序。如果冲突处理程序返回CHANGESET_OMIT,则将进行更改,包括那些导致违反外键约束的更改。或者,如果返回CHANGESET_ABORT,则更改集将回滚。

没有提供当前或冲突的行信息。可以在提供的sqlite3_changeset_iter句柄上调用的唯一函数是sqlite3changeset_fk_conflicts()。

SQLITE_CHANGESET_CONSTRAINT
如果在应用更改时发生了其他任何违反约束的情况(即UNIQUE,CHECK或NOT NULL约束),则以CHANGESET_CONSTRAINT作为第二个参数来调用冲突处理程序。

在这种情况下,没有冲突的行。调用sqlite3changeset_conflict()API的结果是不确定的。

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