本帖最后由 LiveAsaMonster 于 2011-11-24 10:51:40 编辑

解决方案 »

  1.   

    本帖最后由 xuzuning 于 2011-11-24 11:01:34 编辑
      

  2.   

    某天你认识了个美女,终于你们要一夜情了,这个时候你要爱抚,你要脱掉裤子,要戴上安全工具...关键时刻,你突然发现她是个伪娘~天哪于是,这个时候突然我们发现我们用了事务.我们在大脑里赶紧说 :“回滚!回滚!”.Oh mygod.一切都消失了,时光倒流,回到了你刚认识这个“美女”的时候,这就是事务的作用。如果不使用回滚当你发现她是个伪娘的时候,你要用音速丢掉套套,穿上裤子,忍着恶心狂跑,并且希望永远不记得这件事情,可是第二天你发现你穿错了伪娘的裤衩,又把你恶心了一回。这就是我刚发的内容,给哪个该死的家伙编辑成 ......了.
      

  3.   

    要么都成功 要么都失败 数据的一致性等等
    比如说 银行的汇钱 你给我汇了一万块 操作是 update table set Money=Money+10000 where name='heyli'
    update table set Money=Money-10000 where name='LiveAsaMonster' 
    那这样就有可能说 只有 update table set Money=Money+10000 where name='heyli' 成功了 但下面的update table set Money=Money-10000 where name='LiveAsaMonster' 失败了
    我的钱多而你的钱没少 这样银行肯定是不干的
    回滚就变成什么都没操作
    大概意思是这样子 不严谨
      

  4.   

    有点意思,但是程序是如何回滚的还是不明白, $this->db->trans_rollback();这句是php干的还是mysql干的呢?
      

  5.   

     $this->db->trans_rollback();
    额, 为什么要加上这一句?   mysql不是自动回滚的吗?求解释。
      

  6.   

    开始一个事物后(begin stran),执行操作,要么回滚(rollback),要么提交(commit)。
    如果你不做回滚或者提交,这时数据库就被锁住了。(因为你再对数据库进行事物的操作)
    提交就是确认执行事物中的操作。
    回滚就是后悔了不执行操作,当什么事情都没有发生。
      

  7.   


    这句是php...但是php也是调用mysql的api完成具体的回滚.8楼问为什么要写rollback,
    是这样的,在数据库发生突然事件,比如mysql当了,服务器断电了,机房爆炸了,地球毁灭了.....mysql是会自动回滚
    但是如果你要自己对事务进行控制,当然要自己rollback,
    比如,转A的钱到B账上, A-100后,发现B账户刚刚冻结了/..,这时候当然要你自己rollback....
      

  8.   

    同时更新多个记录,但其中一个更新失败,则全部退回到更新操作开始之前。
    只有全部更新成功,才确认写入DB。好比转账:别人转钱给你,先扣减掉ta的转帐款,再加到你的余额。
    假如在加你余额时发生错误,则回滚到转账前的状态,返回错误并提示用户转账不成功。
    仅当大家的更新都成功是,才确认写到数据库中,返回true并提示用户转账已完成。都是基本概念