是否可以以只读模式连接到内存中的sqlite数据库?

时间:2016-11-11 11:30:39

标签: c++ c database sqlite

我知道我可以使用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来完成它吗?

1 个答案:

答案 0 :(得分:3)

SQLITE_OPEN_READONLY标志会影响数据库访问任何文件和处理事务的方式。

shared-cache mode中,多个连接在文件系统的接口中显示为单个连接。因此,它们共享文件访问/事务设置。

要阻止连接启动任何写入事务,请使用PRAGMA query_only