在给定查询函数

时间:2016-06-21 21:49:39

标签: sql database sqlite

正如您可能(或可能不)已经知道的那样,SQLite不提供有关查询结果总数的信息。必须将查询包装在SELECT count(*) FROM (original query);中才能获得行数。

这对我来说非常好,直到其中一个用户创建了自定义SQL函数(您可以在SQLite中定义自己的函数),INSERT执行另一个不相关的表。然后他执行查询:

SELECT customFunction() FROM primaryTable WHERE primaryKeyColumnId = 1;

查询总是返回1行,这是肯定的。事实证明,customFunction()被调用了两次(并插入到其他表中的2行),因为我的应用程序将其查询称为usuall,然后在该查询上调用count(*)作为后续操作

如何解决这个问题?如何只执行原始查询并且仍然有来自SQLite的行计数?

我使用的是SQLite(3.13.0)C API。

1 个答案:

答案 0 :(得分:0)

您必须从查询中删除此类函数调用,否则在实际遍历所有结果行之前无法获取行计数。