【发布时间】:2014-01-21 02:56:41
【问题描述】:
我正在使用两个更新查询,其中在第一个更新查询中我设置记录的 nav order = 0 然后在另一个查询中我将 nav order 递减 1 以使 nav order 具有正确的顺序,我怎样才能执行这两个这个操作只有一个更新查询?任何帮助将不胜感激。
<cfif _q.is_nav_item EQ 1 AND arguments.is_nav_item EQ 0>
<cfquery datasource="#getDSN()#">
UPDATE content
SET nav_order = 0
WHERE id = <cfqueryparam value="#arguments.id#" cfsqltype="cf_sql_integer" />
AND site__id = <cfqueryparam value="#arguments.site__id#" />
;
UPDATE content
SET nav_order = nav_order - 1
WHERE nav_order > <cfqueryparam value="#_q.nav_order#" cfsqltype="cf_sql_tinyint" />
AND site__id = <cfqueryparam value="#arguments.site__id#" />
;
</cfquery>
</cfif>
【问题讨论】:
-
为什么要使用一个更新查询来做这两个?您当前的代码有效,并且非常易读。只需使用事务。
-
@Henry - 绝对可以正常工作......但我的 TL 希望它在一个查询中完成......我不知道是什么让他想到它。
-
如果你要做出这样的改变,应该有一个好的理由。它似乎不太可能产生任何性能优势,更重要的是,查询将更难理解。那么这里的感知好处是什么?
-
你的 TL??温柔的情人?小骆驼?糟糕的律师?
-
@DanBracuk 团队负责人?我猜。
标签: mysql coldfusion