#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)的列表。