Constants Returned By The Conflict Handler
If a conflict handler returns this value no special action is taken. The
change that caused the conflict is not applied. The session module
continues to the next change in the changeset.
SQLITE_CHANGESET_REPLACE
This value may only be returned if the second argument to the conflict
handler was SQLITE_CHANGESET_DATA or SQLITE_CHANGESET_CONFLICT. If this
is not the case, any changes applied so far are rolled back and the
call to sqlite3changeset_apply() returns SQLITE_MISUSE.
SQLITE_CHANGESET_ABORT
If this value is returned, any changes applied so far are rolled back
and the call to sqlite3changeset_apply() returns SQLITE_ABORT.
If CHANGESET_REPLACE is returned by an SQLITE_CHANGESET_DATA conflict handler, then the conflicting row is either updated or deleted, depending on the type of change.
If CHANGESET_REPLACE is returned by an SQLITE_CHANGESET_CONFLICT conflict handler, then the conflicting row is removed from the database and a second attempt to apply the change is made. If this second attempt fails, the original row is restored to the database before continuing.