如果我在MySQL中启动一个事务并更新一行,那么:
UPDATE表SET SomeValue ...... WHERE Id = 1;
我可以马上做到这一点:
SELECT SomeValue FROM table WHERE Id = 1;
...在同一个连接/会话期间,当事务尚未提交时,假设我现在已经获得更新的SomeValue,并且可以安全地假设没有任何东西可以更新SomeValue直到我承诺交易?
感谢。
答案 0 :(得分:2)
在您提交之前,没有其他会话可以更新该行。
你可以自己测试一下,打开两个终端窗口,运行mysql shell,尝试在一个窗口中启动事务和更新,但不要提交。然后尝试在第二个窗口中更新。它会挂起,直到第一个窗口提交,或者达到innodb锁等待超时。
从表中选择对锁定没有任何影响。