考虑一个事务T1,
Start transaction;
Update emp set emp_id=1 where emp_id=3;
commit;我使用的引擎是INNODB引擎。
在对上面显示的事务进行提交操作之前,我再次访问了表--它显示了前面提交的值。如果将行级别锁定放置在表上,它可能会显示错误(当某些事务处于中间时,您无法访问)。在我的理解中是否有任何错误。?有人能帮我吗?
发布于 2013-03-03 04:20:08
即使在事务提交之前,作为事务一部分执行的任何操作都可用于同一事务。这些更改在其他事务中不可用。
要测试这一点,您需要在一个事务中更新,然后从另一个终端启动一个新事务并尝试访问。第二个事务将能够读取数据,但是如果您试图更新,更新将阻塞并等待第一个事务被提交。
如果希望第二个select等待并返回更新数据,则应使用select进行更新。
https://stackoverflow.com/questions/15182140
复制相似问题