小巧、快速、可靠。
選擇其中三項。

SQLite C 介面

xBestIndex() 中的約束值

int sqlite3_vtab_rhs_value(sqlite3_index_info*, int, sqlite3_value **ppVal);

此 API 只能在虛擬表格實作的 xBestIndex 方法內使用。從 xBestIndex 方法外部呼叫此介面的結果未定義,而且可能造成損害。

當 sqlite3_vtab_rhs_value(P,J,V) 介面在虛擬表格實作的 xBestIndex 方法內被呼叫時,其中 P 是傳入 xBestIndex 的 sqlite3_index_info 物件指標的副本,J 是 P->aConstraint[] 中以 0 為起始的索引,則此常式會嘗試將 *V 設定為該約束右運算元的值(如果右運算元已知)。如果右運算元未知,則 *V 會被設定為 NULL 指標。sqlite3_vtab_rhs_value(P,J,V) 介面若且唯若 *V 設定為一個值時才會返回 SQLITE_OK。如果第 J 個約束的右側無法取得,sqlite3_vtab_rhs_value(P,J,V) 介面會返回 SQLITE_NOTFOUND。如果發生錯誤,sqlite3_vtab_rhs_value() 介面可能會返回 SQLITE_OK 或 SQLITE_NOTFOUND 以外的結果代碼。

sqlite3_vtab_rhs_value() 介面通常只有在約束的右運算元是原始 SQL 陳述式中的字面值時才會成功。如果右運算元是一個表達式、對其他欄位的參考或主機參數,則 sqlite3_vtab_rhs_value() 很可能會返回 SQLITE_NOTFOUND

有些約束,例如 SQLITE_INDEX_CONSTRAINT_ISNULLSQLITE_INDEX_CONSTRAINT_ISNOTNULL,沒有右運算元。對於此類約束,sqlite3_vtab_rhs_value() 永遠返回 SQLITE_NOTFOUND。

*V 中返回的 sqlite3_value 物件是一個受保護的 sqlite3_value,在 xBestIndex 方法呼叫期間保持有效。當 xBestIndex 返回時,sqlite3_vtab_rhs_value() 返回的 sqlite3_value 物件會自動釋放。

此常式名稱中的「_rhs_」是「Right-Hand Side」(右側)的縮寫。

另請參閱物件常數函式的列表。