1

如何使用 CFLOOP 更新 Access DB 上的记录?我尝试使用下面的代码,但它似乎给了我一个重复的值而不是一个增量

我的代码:

<cfloop index="i" from="1" to="3">
<cfquery name="query" datasource="datasource">
    update mytable
    set
    columnB = #i#
    where columnA = 'a'                                          
   </cfquery>
</cfloop>

columnB下的记录输出=所有数字3,应该是1,2,3

我的桌子是这样的......

Column A|ColumnA1|ColumnB
A         A        
A         B
A         C

列 A 和 A1 填充了以前的 CFLOOP 和 SQL 插入。

4

1 回答 1

6

每次运行更新时,您都会更新所有具有 columnA = 'a' 的记录,您需要在 where 子句中使用更多条件来停止一次更新多行。

您可以通过使用 cfquery 的 result 属性轻松查看更新了多少行,类似于下面的代码。

<cfloop index="i" from="1" to="3">
<cfquery name="query" datasource="datasource" result='updated'>
    update mytable
    set
    columnB = #i#
    where columnA = 'a'                                          
   </cfquery>
   <cfdump var='#updated#' />
</cfloop>

更新: 鉴于您更新的问题,示例更新查询可能看起来像这样,因为 columnA 和 ColumnA1 的组合使该行唯一。

<cfloop index="i" from="1" to="3">
<cfquery name="query" datasource="datasource" result='updated'>
    update mytable
    set
    columnB = #i#
    where columnA = 'a'      
    AND ColumnA1 = <cfqueryparam value='#i#' />                                    
   </cfquery>
   <cfdump var='#updated#' />
</cfloop>
于 2013-02-06T18:36:58.037 回答