update abc set aaa=aaa+1 where id=1
select aaa from abc where id=1
如果,同时有a,b两个客户操作的话,a客户取到的值可能是b客户刚update的值吗?怎么才能够,取到自己刚更新的值?

解决方案 »

  1.   

    排队方式啊。
    给数据库表中设置一个值 tag=1;如果有tag=1了表示有人进入这个页面了 让他等待。
      

  2.   

    那麼我有個問題,如何讓b客戶等待a客戶操作完后,再update再select呢??
      

  3.   

    总之那个客户没有退出你就让他排队去。或者你可以设置客户在这个page的待留时间。(倒计时。)
      

  4.   

    3楼的可能出现四循环呢,因为,如果那个客户特然死机了,那么tag永远都=1?永远都等待吗?
      

  5.   

    try{}catch (MyException $e) {}
      

  6.   

    mysql 的锁机制 为先update 再select
      

  7.   

    如果是innodb的话?怎么锁表?
      

  8.   

    innodb不用锁,它带事务处理,不会出现冲突的。
      

  9.   

    如果不锁表,select好像不会自动锁表?那么a客户select出来的数据,会不会是b客户刚update的数据?
      

  10.   

    那要看谁先操作,如果是同时innodb会自动让他们排队,并按照update先,select后的顺序进行!所以是可以的!
      

  11.   

    那么myisam的话,就不会自动排队吗?要锁表吗?
      

  12.   

    myisam不支持事务,也就是说不支持并发操作!
      

  13.   

    update abc set aaa=aaa+1 where id=1 
    select aaa from abc where id=1 如果掉转来写的话select aaa from abc where id=1 
    update abc set aaa=aaa+1 where id=1 a,b客户同一时间操作的话,在myisam表b客户想得到a客户update的值,是否要先把a客户锁表?innodb,是否不用锁表?
      

  14.   

    update abc set aaa=aaa+1 where id=1 
    select aaa from abc where id=1 如果掉转来写的话select aaa from abc where id=1 
    update abc set aaa=aaa+1 where id=1 a,b客户同一时间操作的话,在myisam表b客户想得到a客户update的值,是否要先把a客户锁表?innodb,是否不用锁表?
      

  15.   

    update abc set aaa=aaa+1 where id=1 
    select aaa from abc where id=1 如果掉转来写的话select aaa from abc where id=1 
    update abc set aaa=aaa+1 where id=1 a,b客户同一时间操作的话,在myisam表b客户想得到a客户update的值,是否要先把a客户锁表?innodb,是否不用锁表?
      

  16.   

    你能不能给 每一个用户给一条固定的数据呢?(可以考虑双主键)就是 :
    id name tag
    1   a   1
    2   b   2  那你两个客户查询出来的就是他个人的之后怎么update 和select 都不影响别人了啊?
      

  17.   

    想了解mysql的运作,呵呵,方便灵活地运行mysql,有些地方搞不懂,请各位多多包涵!