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

SQLite C 介面

預寫式日誌提交鉤子

void *sqlite3_wal_hook(
  sqlite3*,
  int(*)(void *,sqlite3*,const char*,int),
  void*
);

sqlite3_wal_hook() 函式用於註冊一個回呼函式,每當資料以 WAL 模式提交到資料庫時就會呼叫該回呼函式。

在提交完成且資料庫上的相關寫入鎖釋放後,SQLite 會呼叫此回呼函式,因此實作可以根據需要讀取、寫入或對資料庫進行檢查點操作。

呼叫回呼函式時傳遞給它的第一個參數是註冊回呼函式時傳遞給 sqlite3_wal_hook() 的第三個參數的副本。第二個參數是資料庫控制代碼的副本。第三個參數是被寫入的資料庫的名稱 - "main" 或ATTACH的資料庫的名稱。第四個參數是目前在預寫式日誌檔案中的頁數,包括剛提交的頁面。

回呼函式通常應返回 SQLITE_OK。如果返回錯誤碼,該錯誤將會向上傳播到 SQLite 程式碼庫,導致觸發回呼函式的語句回報錯誤,即使提交已發生。如果回呼函式返回 SQLITE_ROWSQLITE_DONE,或者它返回的值不對應任何有效的 SQLite 錯誤碼,則結果未定義。

單個資料庫控制代碼一次最多可以註冊一個預寫式日誌回呼函式。呼叫 sqlite3_wal_hook() 會取代任何先前註冊的預寫式日誌回呼函式。返回值是先前呼叫的第三個參數的副本(如果有的話),否則為 0。請注意,sqlite3_wal_autocheckpoint() 介面和 wal_autocheckpoint pragma 都會呼叫 sqlite3_wal_hook() 並覆蓋任何先前的 sqlite3_wal_hook() 設定。

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