我知道我可以使用file:DB_NAME?mode=memory&cache=shared
中的sqlite3_open_v2()
打开与内存中sqlite数据库的多个连接。
我打开2个连接到内存数据库。一个带有标记SQLITE_OPEN_URI | SQLITE_OPEN_CREATE | SQLITE_OPEN_READWRITE
,另一个带有SQLITE_OPEN_READONLY | SQLITE_OPEN_URI
。
问题是即使连接是只读的,sqlite也允许我修改数据库。
有没有办法让连接只读?我应该编写自己的VFS来完成它吗?
答案 0 :(得分:3)
SQLITE_OPEN_READONLY
标志会影响数据库访问任何文件和处理事务的方式。
在shared-cache mode中,多个连接在文件系统的接口中显示为单个连接。因此,它们共享文件访问/事务设置。
要阻止连接启动任何写入事务,请使用PRAGMA query_only。