mysql事务
众所周知,mysql是支持事务的,使用事务可以很好的保证数据库中的数据的完整性和安全性
1、什么是事务
事务就是一组操作的集合,这组操作要么全部执行,要么全部不执行
2、mysql中事务的特性
mysql的事务有4大特性,分别是原子性,一致性,隔离性,持久性
原子性:事务中的要么全部执行,要么全部不执行
一致性:事务会将数据从一个一致性的状态转换到另外一个一致性的状态
隔离性:不同事务之间是相互隔离的
持久性:事务一旦提交就会持久化到文件,即使数据库宕机也应该不会受到影响
3、mysql事务的隔离级别
在mysql中,默认的是可重复读(repeatable read),但是mysql实际上有4个隔离级别
读未提交(read uncommited):可以读取到其它事务没有提交的数据 ,这个会造成脏读
读已提交(read commited):只能读取其它事务提交的数据
可重复读(repeatable read):多次读取相同的数据得到的结果是一致的
串行化:(serialazible):事务依次执行,可以充分保证数据的正确性和完整性
4、mybatis中的事务的传播行为
REQUIRED:如果当前有事务,则加入当前事务执行,如果没有,创建新的事务以事务的方式执行
SUPPORTS:如果当前有事务,加入事务很执行,如果没有事务,以非事务的方式执行
NOT_SUPPORT:如果当前有事务,把当前事务挂起,以非事务的方式执行
REQUIRED_NEW:如果当前没有事务,新建事务执行,如果当前有事务,把当前事务挂起,新建事务执行
NESTED:如果父调用有事务,则作为子事务加入到调用方事务中,即使抛出异常,也可以在父事务中捕获到而不影响父事务中的提交,如果父事务回滚,则作为子事务也要回滚
MANDATORY:如果调用方有事务,加入事务执行,如果没有,抛出异常
NEVER:如果调用方存在事务,抛出异常,如果没有,以非事务方式执行