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