1. 什么是事务
拿转账来说,涉及到两个账户的更新操作,一个账户更新操作成功是不允许另一个账户更新失败的,这种场景就需要事务来管理保障一致性。
2. 事务的四大特性(ACID)
- 原子性(Atomicity):组成事务处理的语句形成了一个逻辑单元,不能只执行其中的一部分
- 一致性(Consistency):在事务处理执行前后,数据库是一致的。
拿转账来说,假设用户A和用户B两者的钱加起来一共是5000,那么不管A和B之间如何转账,转几次账,事务结束后两个用户的钱相加起来应该还得是5000,这就是事务的一致性。 - 隔离性(Isolation):一个事务的处理对另一个事务处理没有影响。
比如操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离。 - 持久性(Durability):事务处理的效果能够永久保存下来。
3. 事务的语法
- 开始一个事务:begin或start transaction
- 事务回滚:rollback
- 事务确认:commit
- 直接用set来改变MySQL的自动提交模式
set autcommit=0 禁止自动提交
set autcommit=1 开启自动提交