小巧、快速、可靠。(Small. Fast. Reliable.)
選擇其中三項。(Choose any three.)

SQLite C 介面 (SQLite C Interface)

虛擬表格約束運算子代碼 (Virtual Table Constraint Operator Codes)

#define SQLITE_INDEX_CONSTRAINT_EQ          2
#define SQLITE_INDEX_CONSTRAINT_GT          4
#define SQLITE_INDEX_CONSTRAINT_LE          8
#define SQLITE_INDEX_CONSTRAINT_LT         16
#define SQLITE_INDEX_CONSTRAINT_GE         32
#define SQLITE_INDEX_CONSTRAINT_MATCH      64
#define SQLITE_INDEX_CONSTRAINT_LIKE       65
#define SQLITE_INDEX_CONSTRAINT_GLOB       66
#define SQLITE_INDEX_CONSTRAINT_REGEXP     67
#define SQLITE_INDEX_CONSTRAINT_NE         68
#define SQLITE_INDEX_CONSTRAINT_ISNOT      69
#define SQLITE_INDEX_CONSTRAINT_ISNOTNULL  70
#define SQLITE_INDEX_CONSTRAINT_ISNULL     71
#define SQLITE_INDEX_CONSTRAINT_IS         72
#define SQLITE_INDEX_CONSTRAINT_LIMIT      73
#define SQLITE_INDEX_CONSTRAINT_OFFSET     74
#define SQLITE_INDEX_CONSTRAINT_FUNCTION  150

這些巨集定義了 sqlite3_index_info.aConstraint[].op 欄位允許的值。每個值都代表一個運算子,該運算子是使用虛擬表格 (virtual table) 的查詢之 WHERE 子句中約束條件的一部分。

運算子的左運算元由對應的 aConstraint[].iColumn 欄位指定。 iColumn 值為 -1 表示左運算元是資料列 ID (rowid)。 SQLITE_INDEX_CONSTRAINT_LIMIT 和 SQLITE_INDEX_CONSTRAINT_OFFSET 運算子沒有左運算元,因此對於這些運算子,對應的 aConstraint[].iColumn 沒有意義,不應使用。

從 SQLITE_INDEX_CONSTRAINT_FUNCTION 到值 255 的所有運算子值都保留用於表示由虛擬表格實作的 xFindFunction 方法 多載的函式。

每個約束的右運算元可以使用 sqlite3_vtab_rhs_value() 介面存取。通常,只有當右運算元在輸入 SQL 中顯示為單個常數字面值時,才能使用它。如果右運算元是另一個欄位或運算式(甚至是常數運算式)或參數,則 sqlite3_vtab_rhs_value() 可能無法提取它。SQLITE_INDEX_CONSTRAINT_ISNULL 和 SQLITE_INDEX_CONSTRAINT_ISNOTNULL 運算子沒有右運算元,因此對這些運算子呼叫 sqlite3_vtab_rhs_value() 將始終返回 SQLITE_NOTFOUND。

可以使用 sqlite3_vtab_collation() 介面找到用於比較的排序序列。對於大多數實際的虛擬表格,約束的排序序列並不重要(例如,因為約束是數值的),因此通常不需要 sqlite3_vtab_collation() 介面。

另請參閱物件 (Objects)常數 (Constants)函式 (Functions)的列表。