事务的隔离级别演示-避免脏读,演示不可重复读发生

避免脏读,演示不可重复读发生

  • 开启两个窗口A,B
  • 设置A窗口的隔离级别为read committed;

SET SESSION TRANSACTION ISOLATION LEVEL read committed;

事务的隔离级别演示-避免脏读,演示不可重复读发生

  • 分别在两个窗口中开启事务:

start transaction;

  • 在B窗口中完成转账

update account set money = money - 1000 where name= '小张';

update account set money = money + 1000 where name= '小凤';

事务的隔离级别演示-避免脏读,演示不可重复读发生

***** 没有提交事务!!!

  • 在A窗口中进行查询:

select * from account;

事务的隔离级别演示-避免脏读,演示不可重复读发生

***** 发现这个时候没有转账成功!!!(没有查询到另一个事务未提交的数据:说明已经避免了脏读)。

  • 在B窗口中提交事务

commit;

  • 在A窗口查询

select * from account;

事务的隔离级别演示-避免脏读,演示不可重复读发生

***** 发现这次的结果已经发生了变化!!!(已经发生不可重复读:一个事务已经读到了另一个事务提交的update的数据,导致多次查询结果不一致。)