我有公共(public)接口(interface),允许人们通过输入 sql 命令与数据库进行交互。但是,我不希望他们以任何方式更改数据库(如果可能的话,不访问某些表)。据我了解,SQLite 没有用户的概念,那么我该如何实现这一点呢?
最佳答案
如果查询中没有应用程序定义的sql
函数,该函数会间接修改数据库(例如:SELECT eval('DELETE FROM t1') FROM t2;
) ,然后使用sqlite3_stmt_readonly
来判断准备好的sql
语句是否写入数据库,否则可以尝试打开另一个read_only
数据库连接handler(SQLITE_OPEN_READONLY)
将用于 read_only
访问。
关于c++ - 如何确保 SqLite 中的只读事务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7370577/