我在一进销存项目中因为进出数很频繁
而且还经常几个用户同时进出加减物料数量
我用的是update foodmain set foodstock = foodstock + 5 where foodid = '123456' and foodimg = '7031'
这条语句来修改物料库存,foodid 是物料编号, foodimg  是用户名
请问对SQL来说会不会有对数据的修改有准确性的影响

解决方案 »

  1.   

    你的准确性是指什么,如果只是针对此数据,那肯定是准确的就怕有的语句是
    update foodmain 
    set foodstock = XXX where foodid = '123456' and foodimg = '7031'这个xxx是之前计算出来的
      

  2.   

    To: xys_777
    我指的准确性是说两个或多个用户同事update时
    本来foodstock = 5 的
    用户 A 要 foodstock + 5 
    用户 B 要 foodstock - 3
    那foodstock 是 10 ,还是会 2update foodmain  
    set foodstock = XXX 
    这种情况之前有发生过,后来修改成 foodstock + XX  了
      

  3.   

    用户 A 要 foodstock + 5 
    用户 B 要 foodstock - 3
    一个+5 一个 -2无论谁先执行最后都是 7
      

  4.   

    有没有可能是 A 没修改完,B修改时只知道foodstock 是 5
    然后A修改了,foodstock 是10 , B 又修改成 2
      

  5.   

    不会的,update会对数据加锁的
      

  6.   


    update 会有锁的,默认隔离级别下,select 要等update完成。并且你使用的是set foodstock + 5 (-2)  来更新,这个不会出现问题的。 如果是使用现取出 foodstock值,处理后赋值给变量,在用变量更新会存在问题。 
      

  7.   

    如果仅仅执行这样的update当然没有关系
    担心的是他的数字式经过查询计算之后得到的
    一般的进销存都会存在进进出出的计算等业务逻辑
      

  8.   

    数据库里实际数据的准确性肯定没影响的,Update肯定同时只有一个用户能起作用,倒是你不同用户读到的数据有可能是脏数据
      

  9.   

    在更新的时候你要进行where判断啊
      

  10.   

    update之前加事务锁定,update之后再提交