#define SQLITE_OPEN_READONLY 0x00000001 /* Ok for sqlite3_open_v2() */ #define SQLITE_OPEN_READWRITE 0x00000002 /* Ok for sqlite3_open_v2() */ #define SQLITE_OPEN_CREATE 0x00000004 /* Ok for sqlite3_open_v2() */ #define SQLITE_OPEN_DELETEONCLOSE 0x00000008 /* VFS only */ #define SQLITE_OPEN_EXCLUSIVE 0x00000010 /* VFS only */ #define SQLITE_OPEN_AUTOPROXY 0x00000020 /* VFS only */ #define SQLITE_OPEN_URI 0x00000040 /* Ok for sqlite3_open_v2() */ #define SQLITE_OPEN_MEMORY 0x00000080 /* Ok for sqlite3_open_v2() */ #define SQLITE_OPEN_MAIN_DB 0x00000100 /* VFS only */ #define SQLITE_OPEN_TEMP_DB 0x00000200 /* VFS only */ #define SQLITE_OPEN_TRANSIENT_DB 0x00000400 /* VFS only */ #define SQLITE_OPEN_MAIN_JOURNAL 0x00000800 /* VFS only */ #define SQLITE_OPEN_TEMP_JOURNAL 0x00001000 /* VFS only */ #define SQLITE_OPEN_SUBJOURNAL 0x00002000 /* VFS only */ #define SQLITE_OPEN_SUPER_JOURNAL 0x00004000 /* VFS only */ #define SQLITE_OPEN_NOMUTEX 0x00008000 /* Ok for sqlite3_open_v2() */ #define SQLITE_OPEN_FULLMUTEX 0x00010000 /* Ok for sqlite3_open_v2() */ #define SQLITE_OPEN_SHAREDCACHE 0x00020000 /* Ok for sqlite3_open_v2() */ #define SQLITE_OPEN_PRIVATECACHE 0x00040000 /* Ok for sqlite3_open_v2() */ #define SQLITE_OPEN_WAL 0x00080000 /* VFS only */ #define SQLITE_OPEN_NOFOLLOW 0x01000000 /* Ok for sqlite3_open_v2() */ #define SQLITE_OPEN_EXRESCODE 0x02000000 /* Extended result codes */
Эти битовые значения предназначаются для использования в 3-м параметре sqlite3_open_v2() и в 4-м параметре метода sqlite3_vfs.xOpen.
Только те флаги, отмеченные как "Ok for sqlite3_open_v2()", могут использоваться в качестве третьего аргумента sqlite3_open_v2(). Другие флаги были исторически проигнорированы sqlite3_open_v2(), хотя будущие версии SQLite могли бы измениться так, чтобы ошибка была поднята, если какой-либо из отвергнутых битов передается в sqlite3_open_v2(). Приложения не должны зависеть от исторического поведения.
Отметьте в особенности, что прохождение флага SQLITE_OPEN_EXCLUSIVE в sqlite3_open_v2() НЕ заставляет открыть основной файл базы данных, используя O_EXCL. Прохождение SQLITE_OPEN_EXCLUSIVE в sqlite3_open_v2() исторически не делает ничего и могло бы стать ошибкой в будущих версиях SQLite.