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

SQLite C 介面

計算被修改的資料列數目 (計算被修改的資料列數量)

int sqlite3_changes(sqlite3*);
sqlite3_int64 sqlite3_changes64(sqlite3*);

這些函式會回傳由最近在指定資料庫連線 (唯一參數) 上完成的 INSERT、UPDATE 或 DELETE 陳述式所修改、插入或刪除的資料列數目。這兩個函式除了回傳值的類型不同之外,其他都相同;如果最近的 INSERT、UPDATE 或 DELETE 所修改的資料列數目大於 "int" 類型所能支援的最大值,則 sqlite3_changes() 的回傳值將不確定。執行任何其他類型的 SQL 陳述式並不會修改這些函式所回傳的值。

只會計算 INSERT、UPDATE 或 DELETE 陳述式直接造成的變更,不會計算由觸發器外鍵動作REPLACE約束解析所造成的輔助變更。

INSTEAD OF 觸發器攔截的檢視變更不會被計算。在檢視上執行 INSERT、UPDATE 或 DELETE 陳述式後,sqlite3_changes() 所回傳的值永遠為零。只會計算對實際資料表的變更。

如果在觸發程式執行期間執行 sqlite3_changes() 函式,情況會更複雜。如果程式使用changes() SQL 函式,或者其他回呼函式直接呼叫 sqlite3_changes(),就可能會發生這種情況。基本上

這表示如果在觸發器中的第一個 INSERT、UPDATE 或 DELETE 陳述式使用 changes() SQL 函式 (或類似函式),它會回傳呼叫陳述式開始執行時所設定的值。如果在觸發程式中的第二個或後續的此類陳述式使用它,則回傳的值會反映同一個觸發器中前一個 INSERT、UPDATE 或 DELETE 陳述式所修改的資料列數目。

如果在sqlite3_changes()執行時,另一個執行緒在同一個資料庫連線上進行變更,則回傳的值將無法預測且沒有意義。

另請參閱

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