在上一篇《浅述当前模式读与一致性读的区别》文章里,我用2个特殊例子描述当前模式读和一致性读之间的区别,并提到了“如在事务启动后到数据块被读取之间的这段时间内,相应的数据块发生了改变,那么可能就会有我们意想不到的事情发生”。而这样的意想不到的结果可能能被我们接受,但也可能难以被接受。
我们先看一下以下2条UPDATE语句:
where object_id = 102 and (select count(*) from t_test2 t1, t_test2 t2) > 0;