文章目录
一、事务是什么?
事务其实就是一组DML(insert、delete、update)语句的集合。MySQL数据库InnoDB存储引擎支持事务,MyISAM不支持。而且MySQL的事务默认是自提交模式,如果想要开启事务,必须以begin命令开始,以commit或者rollback命令结束。
二、事务的特性
1.原子性(Atomicity)
事务的原子性是指事务中包含的所有操作要么都做,要么都不做,保证数据库是一致的。
甲账户向乙账户转账1000元,则先将甲账户减少1000元,再将乙账户增加1000,这两个动作要么都提交,要么都回退,不可能发生一个有效另一个无效的情况。
2.一致性(Consistency)
一致性是指数据库中的数据在事务操作前和事务处理后必须都满足业务规则约束。
甲乙账户的总金额在转账前和转账后必须一致,如有不一致,则必须是短暂的,且只有在事务提交前才会出现的。
3.隔离性(Isolation)
隔离性是数据库允许多个并发事务同时对数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。
在甲、乙之间转账时,丙同时向甲转账,若同时进行,则甲、乙之间的一致性不能得到满
足。所以在甲、乙事务执行过程中,其他事务不能访问(修改)当前相关的数值。