我正在使用MySQL:5.7.24。
我的隔离级别设置为“ REPEATABLE-READ”,我试图运行2个事务(T1,T2),其中命令按以下顺序进行:
<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
...
<form ...>
<input type="text" name="bar" value="${fn:escapeXml(param.foo)}" />
...
</form>
我期望步骤(4)应该被阻止,因为T1已经读取了该步骤,但是这没有发生。有人可以解释我哪里错了吗?
我还有以下交易订单:
1) T1: begin transaction
2) T2: begin transaction
3) T1: read a row R1
4) T2: update row R1 which is successful
5) T1: read the same row R1 (and gets old value)
6) T2: commit
7) T1: commit
我希望事务T2 / T1到1) T1 Begin Transaction
2) T2 Begin Transaction
3) T1 reads R1
4) T2 reads R1
5) T1 updates R1
6) T2 updates R2
7) T1 commit
8) T2 commit
(以后再更新),因为它正在更新已被修改的R1(或者它被其他事务更新的时间),我该怎么办?干嘛?