一、脏读
事务A执行3个操作,第1个操作执行select语句,第2个操作执行update语句。
注意:事务没有执行完成的时候,事务是没有提交的。只有事务的3个操作完成之后,事务才会提交。
但事务A中第2个操作,会把表结构中的id为1的数据进行更新。(但事务A没有提交)
此时,事务B来查询id为1的数据,会查到事务A第2操作更新之后的数据(但事务A没有提交)
事务B读取到事务A没有提交的数据——脏读。
二、不可重复读
事务A执行4步操作,第1步执行select语句,
此时,事务B执行update操作,把id为1的数据更新,并将此次操作提交到数据库,
事务A执行第3步select语句,此时数据跟第1步查到的不一样
三、幻读
事务A执行4步操作,第1步执行select语句,发现id为1没有数据
此时,并发事务B执行insert操作,把id为1的数据插入,并提交数据库.
事务A执行第2步insert操作,此时不能插入成功,会报错,因为id是主键,主键不能重复
事务A执行第3步select操作,还是差不到数据(前提:解决了不可重复读的问题,即读取同一条记录,两次读取的数据是相同的......第1次select操作查不到,第3次select操作也查不到)