只读事务
session1中:
SQL>set transaction read only; ---时间点1 //必须是事务开始的第一条语句
SQL>查询表a语句; ---时间点3
session2中:
SQL>修改表a语句;
SQL>commit; ---时间点2
//当在时间点3查询表a,数据仍然是时间点2修改之前的旧数据
顺序事务:
session1
设置只读事务后会导致当前session无法执行DML操作,顺序事务可以解决
SQL>set transaction isolation level serializable; ---时间1 //必须是事务开始的第一条语句
SQL> 查询表a语句;
SQL>修改表b语句; ---时间3 //若时间1设置的事务只读,则这里修报错
session2
SQL> 修改表a语句;
SQL>commit; ----时间2
//sessin1中在时间3时查询表a仍是修改前数据,且此时允许对其他表执行DML操作