小巧。快速。可靠。
選擇任何三個。

Session 模組 C 介面

傳遞給衝突處理常數

#define SQLITE_CHANGESET_DATA        1
#define SQLITE_CHANGESET_NOTFOUND    2
#define SQLITE_CHANGESET_CONFLICT    3
#define SQLITE_CHANGESET_CONSTRAINT  4
#define SQLITE_CHANGESET_FOREIGN_KEY 5

可以作為衝突處理器第二個參數傳遞的值。

SQLITE_CHANGESET_DATA
如果資料庫中存在具有所需 PRIMARY KEY 欄位的列,但更新修改的一個或多個其他 (非 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 的結果未定義。

另請參閱 物件常數函數 清單。