更新 一个字段 要防止并发

解决方案 »

  1.   

    防止并发是什么意思?你要改这个字段时禁止其它用户更改和读取?如果是这个意思你可以这样子写set autocommit=0;
    select * from tableName where id=1 for update;
    update tableName set name="222" where id=1;
    commit;
      

  2.   

    CREATE PROCEDURE  sequence(IN seqName varchar(30),OUT val INT)  BEGIN 
               
          update  comm_req  set  seq_value=seq_value+1 where seq_name=@seqName;      select seq_value into  val  where seq_name=@seqName; END;
    mysql的存储过程 总是有错,哪位高手帮忙改一下啊?
      

  3.   

    CREATE PROCEDURE sequence 
       IN seqName varchar(30),
       val INT OUT
    asBEGIN  
        
      update comm_req set seq_value=seq_value+1 where seq_name=@seqName;   select seq_value into val where seq_name=@seqName;  END;这样子写应该没错的
     
      

  4.   


    CREATE PROCEDURE sequence(IN seqName varchar(30),OUT val INT) 
    BEGIN  
      update comm_req set seq_value=seq_value+1 where seq_name=seqName;
      select seq_value into val where seq_name=seqName;  
    END;
    去掉@符号测试一下
    你命名最好不要这样,不知道会不会有错误发生
    下面这样子给变量命名好了CREATE PROCEDURE sequence(IN v_seqName varchar(30),OUT val INT) 
    BEGIN  
      update comm_req set seq_value=seq_value+1 where seq_name=v_seqName ;
      select seq_value into val where seq_name=v_seqName ;  
    END;