要么都成功 要么都失败 数据的一致性等等 比如说 银行的汇钱 你给我汇了一万块 操作是 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' 失败了 我的钱多而你的钱没少 这样银行肯定是不干的 回滚就变成什么都没操作 大概意思是这样子 不严谨
比如说 银行的汇钱 你给我汇了一万块 操作是 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' 失败了
我的钱多而你的钱没少 这样银行肯定是不干的
回滚就变成什么都没操作
大概意思是这样子 不严谨
额, 为什么要加上这一句? mysql不是自动回滚的吗?求解释。
如果你不做回滚或者提交,这时数据库就被锁住了。(因为你再对数据库进行事物的操作)
提交就是确认执行事物中的操作。
回滚就是后悔了不执行操作,当什么事情都没有发生。
这句是php...但是php也是调用mysql的api完成具体的回滚.8楼问为什么要写rollback,
是这样的,在数据库发生突然事件,比如mysql当了,服务器断电了,机房爆炸了,地球毁灭了.....mysql是会自动回滚
但是如果你要自己对事务进行控制,当然要自己rollback,
比如,转A的钱到B账上, A-100后,发现B账户刚刚冻结了/..,这时候当然要你自己rollback....
只有全部更新成功,才确认写入DB。好比转账:别人转钱给你,先扣减掉ta的转帐款,再加到你的余额。
假如在加你余额时发生错误,则回滚到转账前的状态,返回错误并提示用户转账不成功。
仅当大家的更新都成功是,才确认写到数据库中,返回true并提示用户转账已完成。都是基本概念