
举一个简单的例子,A给B转账,在数据库中就需要给A,B进行update *** 作。这2条sql语句必须都执行或者都不执行(称为一个事务)。假如先执行B的update语句,B的金额增加了100,然后执行A的update语句,A的金额减100。如果A的余额大于100,那么2个语句没问题,但是A的余额小于100时,再减100就变成负的了,这不符合实际情况。所以第二条sql就出现无法执行,那么数据库的状态必须回到没有执行B的update语句之前。
当一个事务执行的时候,数据库会依次执行中间的sql语句,当某一条sql发生错误以后,根据事务的原子性,通过2种方式使数据库回到事务没有执行的状态。撤销就是相当于不执行commit;回滚就是执行一遍相反的 *** 作,比如再执行B的update金额减100。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)