【发布时间】:2013-11-25 11:14:25
【问题描述】:
我有一个在 CF 任务中安排为每 30 秒运行一次的 ColdFusion 文件。此文件的目的是将响应表中的文本插入到订单表中。以前一切都很好,但现在有问题,即
随机 6 次中的 1 次,文件被执行两次,每行代码运行两次。所以订单被插入了两次。
我已检查是否存在具有响应 id xxx 的相同订单,请不要再次插入。但我仍然看到重复。任何帮助将不胜感激。
<cfquery name="getdupeordersinfile" datasource="#Application.ds#" dbtype="ODBC" username="#Application.UserName#" password="#Application.Password#">
SELECT TOP 1 * from Orders
Where ltrim(rtrim(smsresponseid)) = '#val(responseId)#'
</cfquery>
<cfif getdupeordersinfile.recordcount EQ 0>
<cfquery name="getInsertInOrder" maxrows="1" datasource="#Application.ds#" dbtype="ODBC" username="#Application.UserName#" password="#Application.Password#" result="stResult">
INSERT INTO Orders
(....)
values (...)
</cfquery>
</cfif>
谢谢
【问题讨论】:
-
我会将这块 CFQUERIES 包装在
中,看看是否有帮助。此外,如果您添加列限制以禁止重复 SMSResponseID,则无论如何第二次插入都会失败。 -
你确定它运行了两次吗? http 日志将帮助您确定这一点。另外,如果您需要每 30 秒运行一次,您是否考虑过使用数据库触发器而不是 CF?
-
鉴于提供的信息有限,没有明显的原因代码会执行两次。您需要为我们提供更多背景信息。例如,脚本中的实际代码是什么(不仅仅是 sn-p)?
responseId的来源是什么?是否涉及任何 CFC?此外,发布确认代码实际执行两次的日志记录结果。
标签: coldfusion