#define SQLITE_VTAB_CONSTRAINT_SUPPORT 1 #define SQLITE_VTAB_INNOCUOUS 2 #define SQLITE_VTAB_DIRECTONLY 3 #define SQLITE_VTAB_USES_ALL_SCHEMAS 4
這些巨集定義了 sqlite3_vtab_config() 介面的各種選項,虛擬表格 的實作可以使用這些選項來自訂和優化其行為。
如果 X 不為零,則虛擬表格實作保證,如果 xUpdate 返回 SQLITE_CONSTRAINT,它會在對內部或永久性資料結構進行任何修改之前執行此操作。如果 ON CONFLICT 模式為 ABORT、FAIL、IGNORE 或 ROLLBACK,SQLite 可以回滾陳述式或資料庫交易,並根據需要放棄或繼續處理目前的 SQL 陳述式。如果 ON CONFLICT 模式是 REPLACE 且 xUpdate 方法返回 SQLITE_CONSTRAINT,SQLite 會將此情況處理為 ON CONFLICT 模式為 ABORT。
需要處理 OR REPLACE 的虛擬表格實作必須在 xUpdate 方法中執行此操作。如果對 sqlite3_vtab_on_conflict() 函式的呼叫指出目前的 ON CONFLICT 策略是 REPLACE,虛擬表格實作應該在 xUpdate 回呼中靜默地替換適當的列並返回 SQLITE_OK。或者,如果無法執行此操作,它可能會返回 SQLITE_CONSTRAINT,在這種情況下,SQLite 會退回到 OR ABORT 約束處理。