SQLite错误:复合SELECT中的术语太多

时间:2012-03-02 04:11:18

标签: ios sqlite select

当我向sqlite数据库文件中插入太多数据时,会出现“复合SELECT中的术语太多”错误。我用“insert into ... select ... union select ... union ...”。我知道它的选择语句太多了,但我的问题是:复合SELECT语句中的最大术语数是多少?

2 个答案:

答案 0 :(得分:25)

复合SELECT语句是由运算符UNION,UNION ALL,EXCEPT或INTERSECT连接的两个或多个SELECT语句。我们将复合SELECT中的每个SELECT语句称为“术语”。

SQLite中的代码生成器使用递归算法处理复合SELECT语句。因此,为了限制堆栈的大小,我们限制了复合SELECT中的术语数量。最大术语数是SQLITE_MAX_COMPOUND_SELECT,默认为500.我们认为这是一个慷慨的分配,因为在实践中我们几乎从未看到复合选择中的术语数超过一位数。

使用sqlite3_limit(db,SQLITE_LIMIT_COMPOUND_SELECT,size)接口可以在运行时降低复合SELECT术语的最大数量。

了解更多详情请查看... http://www.sqlite.org/limits.html

答案 1 :(得分:-7)

您使用的SELECT数量没有限制。您需要做的就是检查列的列表是否与INSERT列匹配。