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