MySQL事务 - 在事务期间读取

时间:2014-08-22 23:58:34

标签: mysql transactions

如果我在MySQL中启动一个事务并更新一行,那么:

UPDATE表SET SomeValue ...... WHERE Id = 1;

我可以马上做到这一点:

SELECT SomeValue FROM table WHERE Id = 1;

...在同一个连接/会话期间,当事务尚未提交时,假设我现在已经获得更新的SomeValue,并且可以安全地假设没有任何东西可以更新SomeValue直到我承诺交易?

感谢。

1 个答案:

答案 0 :(得分:2)

在您提交之前,没有其他会话可以更新该行。

你可以自己测试一下,打开两个终端窗口,运行mysql shell,尝试在一个窗口中启动事务和更新,但不要提交。然后尝试在第二个窗口中更新。它会挂起,直到第一个窗口提交,或者达到innodb锁等待超时。

从表中选择对锁定没有任何影响。