事务的传播性和隔离级别

事务的传播性:
1、PROPOGATION_REQUIRES            --需要在一个事务中执行
2、PROPOGATION_SUPPOTS             --不需要在一个事务中执行,如果有事务,也可以执行
3   PROPOGATION_NOT_SUPPORTED --不支持在一个事务中执行,如果在一个正在运行的事务中执行,则会被挂起

5   PROPOGATION_NEVER                  --必须不在一个正在运行的事务中执行,则会抛出异常
6   PROPOGATION_MANDATORY        --必须在一个正在运行的事务中执行,否则抛出异常
7   PROPOGATION_NEW                      --如果有一个事务正在执行,则挂起该事务,重开一个事务

4   PROPOGATION_NESTED                --如果有一个事务a正在进行中,该事务被嵌套在a中

事务的隔离级别:

1、ISOLATION_DEFAULT  默认,3 ,也就是可重复读

2、ISOLATION_READ_UNCOMMITED  ,读未提交,会引起不可重复读、脏读、幻读

3、ISOLATION_READ_COMMITED,读已提交,避免脏读,但仍然会有不可重复读、幻读

4、ISOLATION_READ_REPEATED,可重复读,避免脏读、不可重复读,仍然有幻读

5、ISOLATION_SEARILIZE ,序列化

脏读:读取了未提交的数据a,然后a在事务中回滚了

不可重复读:读取一个数据,前后不一致,这个是因为其他事务修改了该数据

幻读:用一条sql,查询数据,第二次查询到的数据的数量和第一次查询到的数量不同

mysql 的默认的隔离级别是:可重复读

oracle、sqlserver 的默认隔离级别是:读已提交

原文地址:https://www.cnblogs.com/drafire/p/10661395.html