当我从这里和这里读取时,如果事务级别是可重复的--读取任何其他事务都不能读取由该transaction.But访问的数据,我在测试时发现了这一点。* (MySQL服务器版本:5.0.21-community /innodb engine)*。
事务A:
mysql> SELECT @@tx_isolation;
+-----------------+
| @@tx_isolation |
+-----------------+
| REPEATABLE-READ |
+-----------------+
1 row in set (0.00 sec)
mysql> SET autocommit = 0;
Query OK, 0 rows affected (0.00 sec)
mysql> UPDATE manufacturer
-> SET lead_time = 22
-> WHERE mcode = 'ACL';
Query OK, 1 rows affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0事务B
mysql> set autocommit=0;
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT * FROM Manufacturer ;
+-------+------------+-----------+
| mcode | mname | lead_time |
+-------+------------+-----------+
| ACL | ACL Cables | 2 |
| HAY | Haycarb | 4 |
| HYL | Hayleys | 5 |
+-------+------------+-----------+
3 rows in set (0.00 sec)问题是,我期望事务B等待事务A提交,但它没有发生。如何应用这个?
发布于 2013-04-25 05:27:07
可重复读取应用于单个事务。它说,在事务中,您可以随心所欲地读取一个值,您将得到相同的答案。此外,也无法判断哪个事务首先开始,A还是B。此外,一个事务可以在任何时候被中断,而另一个事务可以运行或继续。您的示例没有反映实际情况,因为您(在命令行上)首先运行A到完成,然后B运行到完成。这是序列化。
发布于 2013-04-25 04:53:59
因为交易A显示:
... Changed: 0 ...该记录已经将lead_time设置为2,因此UPDATE没有更改任何内容,事务B只看到原始值。
https://stackoverflow.com/questions/16206096
复制相似问题