Run-time Limits
Run-time Limits
int sqlite3_limit(sqlite3*, int id, int newVal
这个接口允许各种结构的大小在连接的基础上受到限制。第一个参数是要设置或查询限制的数据库连接。第二个参数是定义要受限大小的构造类的限制类别之一。第三个参数是该构造的新限制。
如果新限制是负数,则限制不变。对于每个限制类别SQLITE_LIMIT_ NAME
,编译时都会有一个硬预设处理器宏,名为SQLITE_MAX_ NAME
。(名称中的“_LIMIT_”更改为“_MAX_”。)尝试将其上限超出上限的尝试自动截断为硬性上限。
无论限制是否更改,sqlite3_limit()接口都会返回限制的先前值。因此,要在不更改限制的情况下查找限制的当前值,只需使用第三个参数设置为-1来调用此接口。
运行时限制旨在用于既管理其内部数据库又管理受不可信外部源控制的数据库的应用程序中。一个示例应用程序可能是一个Web浏览器,它有自己的数据库用于存储历史记录,以及由从互联网下载的JavaScript应用程序控制的单独数据库 内部数据库可以被赋予较大的默认限制。由外部来源管理的数据库可以提供更小的限制,以防止拒绝服务攻击。开发人员可能也希望使用sqlite3_set_authorizer()接口来进一步控制不可信的SQL。使用max_page_count PRAGMA可以包含由不受信任的脚本创建的数据库的大小。
未来版本中可能会添加新的运行时限制类别。