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