我有一个node.js服务器,它使用node-mysql连接池来查询MySQL数据库。如何防止MySQL用户定义的变量碰撞
我需要使SELECT
查询使用用户定义的变量来添加以前的行的总和。查询之前,我SET
的变量初始化为0。
SET @sum:=0;
SELECT *, @sum := @sum + `value` AS SUM FROM `table`;
查询按预期工作,但我很担心,如果有在同一时间多个请求我的节点服务器会发生什么。服务器将进行多个查询。他们会碰撞并相互影响,每增加一个变量吗?如果是的话,我该如何预防呢?
最好的情况是将变量的范围限制在一个SELECT
查询中。这将允许我删除SET
声明并在ISNULL
中包装@sum
。因此,结果将是
SELECT *, @sum := ISNULL(@sum,0) + `value` AS SUM FROM `table`;
但我不知道如何使这个查询@sum
年底末值和下一个查询左极限范围内,它不是null
等没有关系再次从0递增。
无论如何,我可以保留SET
,但需要确保使用相同连接的多个查询不会相互影响。我不知道MySQL如何处理查询,所以这可能不是问题,但我需要确定。
谢谢你的帮助!