mysql的事务未执行完前为什么还能查询出来数据

mazhlo19880511 2015-11-20 11:25:08
图1:数据库初始数据:

图2:commit前的脚本:更改no=5的记录

图3:commit前的使用查询:

图4:commit脚本:

图5:commit后的查询:

首先说明我用的是innodb引擎:

问题是:在我图2的tran.commit前为什么还能查询出来图3中no=5的数据呢?为什么没有锁住。。。我希望是commit后在图片3应该在一直查询等待着。。
...全文
2468 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
mazhlo19880511 2015-11-23
  • 打赏
  • 举报
回复
引用 2 楼 trainee 的回复:
select * from ... where no=5 后面要加锁 lock in share mode 或 for update
感谢,按照这个方法已解决
rick-he 2015-11-21
  • 打赏
  • 举报
回复
你看下你的隔离级别,可能是出现了脏读
mazhlo19880511 2015-11-20
  • 打赏
  • 举报
回复
最后一句错了,我希望是commit前在图片3应该在一直查询等待着。。
trainee 2015-11-20
  • 打赏
  • 举报
回复
select * from ... where no=5 后面要加锁 lock in share mode 或 for update

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧