1. Read Uncommitted

读取其他其他事务没有commit的数据,就是在只要在commit之前对数据库进行了操作都可以读取到,不过多解释

2.Read Committed

只能读取到已经提交的事务,没有commit就读取不到,不过多解释

3.Repeatable Read

可以读取到对数据的更新数据(更新之后的),可以读取到新增的数据(实际还没新增,未commit),可以读取到删除的数据(写了删除 操作,但是实际没有删除。在commit之前),mysql默认是这个值,在事务种需要新增同时需要读取原数据的解决办法如下

4.Serializable

最高隔离级别–上述情况的意外情况均不会产生,并发性能较低

5.解决办法

1.SELECT @@GLOBAL.tx_isolation AS ‘Global Transaction Isolation Level’, @@SESSION.tx_isolation AS ‘Session Transaction Isolation Level’;  –在mysql数据库查询当前级别

2.SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ; –修改级别

3.SELECT @@SESSION.tx_isolation AS ‘Session Transaction Isolation Level’; –再看看改成功没有

4.SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ; –恢复为默认

 

 

还有一种办法,新增之后把id存起来,where not in [存起来的这些id]