事务ACID —— 原子性

什么是原子性 ?

一个交易(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
引用自 维基百科 —— ACID

即一个事务我要么成功,要么失败,没有中间状态。

如何回滚 ?

场景: A 对 B 进行转账

以上步骤,假设说在ver3为B加上100元时发生错误。
如果没有事务那么系统数据就会停留在ver2这里,那么就会造成A减掉了100元,而B也没有拿到这个100元,造成了用户资损。
添加上事务后,那么系统就会回滚到ver1,数据还原成了初始状态。

那么事务失败,需要数据回滚。数据库是如何实现的呢?

其实数据库在事务开启后,当我们做的每一次变更,系统就会自动创建一个undo。那么需要回滚时候,数据库就会按照undo来进行回滚。如下: