MYSQL可以解决么?
怎么用?有例子么?

解决方案 »

  1.   

    mysql中表类型为innodb可以使用事务.
    复杂的操作可以使用事务,一般情况不需要考虑这么精确.
    比如你说的例子,需要控制的只是在checkout的时候: 
    首先:
    A:    select count from product_table where pid=3333
    如果count>0,表示还有商品,那么可以执行:
    B:    update count=count-1 from product_table where pid=3333但是这样的操作有可能发生问题. 如果两个人同时访问导致sql执行顺序为A, A, B, B的情况,如果count为1,最终count会变为-1,其中一个人其实是买不到的但是仍然得到了买到的返回.
    但是如果修改B为:
      update count=count-1 from product_table where pid=3333 and count>0 
    这样在第二次执行B的时候,就不会发生-1操作,同时mysql_affected_rows将会返回0,
    这样就不会导致数据错误,只是第二个人会得到checkout不成功的消息.就没有问题了.