mysql版本是5.0.51b,请问游标中可以修改游标所查询的表的数据吗?通过id进行遍历,遍历一行数据,就修改了这行的数据的status但从一本mysql5权威指南中看到,说是游标不能修改所在表数据,如果修改,会发生无法预料的行为。是这样的吗?

解决方案 »

  1.   

    关键是你游标在哪用。
    你在外面查询数据再修改当然何以,
    在触发器里就不行,DELETE 和UPDATE是禁止的,防止递归错误。
      

  2.   

    不能。 MYSQL的CURSOR是只读的。你只能再写错误去到表中更新数据。
      

  3.   


    begin
        declare deduction_cursor cursor for select userddid from userdeduce where customerid=v_customerid and status=0 order by userddid;
       SET v_endFlag=0;
       OPEN deduction_cursor;
       FETCH deduction_cursor INTO v_userddid_cur;
       WHILE (v_endFlag=0) do       
                update userdividededuce set status=1 where userddid=v_userddid_cur;
           FETCH deduction_cursor INTO v_userddid_cur;
            END WHILE;
    CLOSE deduction_cursor;    
    end;去掉了一些业务逻辑。这个游标是操作userdeduce表,游标运行中又更新了该表的记录的状态,这样算是修改了当前表的数据了吧,会影响游标吗?会造成不可预知的问题吗?
      

  4.   

    就是说游标是select语句,就没有修改的问题了是吧没见过游标除了select语句外,还能有其他修改语句的啊