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

SQLite C 介面

判斷虛擬表格欄位存取是否用於 UPDATE

int sqlite3_vtab_nochange(sqlite3_context*);

如果在xColumn方法中呼叫 sqlite3_vtab_nochange(X) 函式(該方法屬於虛擬表格),那麼如果該欄位是在 UPDATE 操作期間被提取,且其值不會改變,則該函式可能會返回 true。虛擬表格的實作可以利用這個提示,返回一個計算成本較低的返回值,並且對應的 xUpdate 方法會將其理解為「無變更」的值。

如果 xColumn 方法呼叫 sqlite3_vtab_nochange() 並發現該欄位在 UPDATE 陳述式中未被更改,則 xColumn 方法可以選擇不設定結果直接返回,而無需呼叫任何 sqlite3_result_xxxxx() 介面。在這種情況下,sqlite3_value_nochange(X) 將會在 xUpdate 方法中針對相同的欄位返回 true。

sqlite3_vtab_nochange() 函式是一種最佳化措施。即使 sqlite3_vtab_nochange() 介面總是返回 false,虛擬表格的實作也應該繼續提供正確的答案。在目前的實作中,對於增強的 UPDATE FROM 陳述式,sqlite3_vtab_nochange() 介面確實總是返回 false。

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