天天看点

回滚 rollback

为了保证在应用程序、数据库或系统出现错误后,数据库能够被还原,以保证数据库的完整性,所以需要进行回滚。

回滚(rollback)就是在事务提交之前将数据库数据恢复到事务修改之前数据库数据状态。

例如,用户A给用户B转账,在数据库中就需要给A与B的账户信息进行修改(update)操作,而这两条sql语句必须都执行或者都不执行。 例如先执行用户B的修改(update)语句,使用户B的账户金额增加了1000,然后执行用户A的update语句,使用户A的账户金额减少了1000。 如果用户A的账户金额大于1000,则交易顺利进行,不存在任何问题,但是当用户A的账户金额小于1000时,由于转账金额不允许大于账户金额,第二条sql语句语句就无法正确执行,此时,数据库的状态必须回到没有执行B的update语句之前,需要进行回滚操作,回滚就是执行一遍相反的操作,此时再执行B的update金额减1000。

回滚与撤销的区别:

回滚是指将数据库的状态恢复到执行事务之前的状态,其中可能会使用UNDO日志进行回滚。

撤销是一种记录日志的方式,并不是主要服务于事务回滚,而是主要用于系统从故障中恢复。 例如,系统突然断电,系统要根据UNDO日志对未完成的事务进行处理,保证数据库的状态为执行这些事务之前的状态。

回滚的作用就是,当有一个SQL语句执行时,条件不符合要求,比如你要插入一个数据,但是插入的数据要有条件的,这时候你就可以用回滚,如果条件成功就COMMIT提交的意思,不然就ROLLBACK回滚,也就是说插入不成功