#define SQLITE_IOCAP_ATOMIC 0x00000001 #define SQLITE_IOCAP_ATOMIC512 0x00000002 #define SQLITE_IOCAP_ATOMIC1K 0x00000004 #define SQLITE_IOCAP_ATOMIC2K 0x00000008 #define SQLITE_IOCAP_ATOMIC4K 0x00000010 #define SQLITE_IOCAP_ATOMIC8K 0x00000020 #define SQLITE_IOCAP_ATOMIC16K 0x00000040 #define SQLITE_IOCAP_ATOMIC32K 0x00000080 #define SQLITE_IOCAP_ATOMIC64K 0x00000100 #define SQLITE_IOCAP_SAFE_APPEND 0x00000200 #define SQLITE_IOCAP_SEQUENTIAL 0x00000400 #define SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN 0x00000800 #define SQLITE_IOCAP_POWERSAFE_OVERWRITE 0x00001000 #define SQLITE_IOCAP_IMMUTABLE 0x00002000 #define SQLITE_IOCAP_BATCH_ATOMIC 0x00004000
sqlite3_io_methods
物件的 xDeviceCharacteristics
方法會返回一個整數,該整數是由這些位元值組成的向量,表示儲存 sqlite3_io_methods
所參考之檔案的儲存裝置的 I/O 特性。
SQLITE_IOCAP_ATOMIC 屬性表示任何大小的寫入都是原子性的。SQLITE_IOCAP_ATOMICnnn 值表示寫入大小為 nnn 位元組且地址對齊為 nnn 的整數倍的區塊是原子性的。SQLITE_IOCAP_SAFE_APPEND 值表示當資料附加到檔案時,會先附加資料,然後再擴展檔案大小,絕不會反過來。SQLITE_IOCAP_SEQUENTIAL 屬性表示資訊寫入磁碟的順序與呼叫 xWrite()
的順序相同。SQLITE_IOCAP_POWERSAFE_OVERWRITE 屬性表示在當機或電源損失後重新啟動後,檔案中唯一可能更改的位元組是在應用程式層級寫入的位元組,而相鄰的位元組,即使是同一扇區內的位元組,也保證不會更改。SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN 旗標表示檔案在開啟時無法刪除。SQLITE_IOCAP_IMMUTABLE 旗標表示檔案位於唯讀媒體上,即使具有較高權限的程序也無法更改。
SQLITE_IOCAP_BATCH_ATOMIC 屬性表示底層檔案系統支援在以 SQLITE_FCNTL_BEGIN_ATOMIC_WRITE 和 SQLITE_FCNTL_COMMIT_ATOMIC_WRITE 標記的寫入操作時,以原子方式執行多個寫入操作。