老师你好我再自己电脑实验不成功,老师帮忙看下原因哪里

来源:3-12 锁模块之MyISAM与InooDB关于锁方面的区别_2

白平衡

2019-03-30

图片描述
图片描述
以上是Innodb的表。
老师我再navicate中执行了加排它锁的select语句后没有提交事务然后在命令行依然可以查询可能是什么原因造成的啊?
还有老师说的不用修改自动提交试用begin transaction 在我这边运行显示的是语法错误。
在update上使用 for update 以及lock in share mode也报语法错误是因为update不能使用么,是什么原因啊?
在innodb表中执行update语句会不会默认的给它上排它锁啊?

写回答

1回答

翔仔

2019-04-01

同学好,首先视频里说过了呢,同学第一个情况用for update 属于当前读,而命令行里使用的方式是快照读,快照读是不会被阻塞的,不管该行记录是否正在被其他进程操作,因为快照读不需要加锁;

如果没有修改自动提交而使用begin transaction有语法问题,可能是版本问题,我这边试是ok的;

update语句会加上对应的排它锁的,再在后面写for update是不允许的,不能自己阻塞自己:)

0
1
白平衡
感谢老师的耐心认真解答,让我对知识的理解又更深入了一些。另外这边使用start transaction 是可以的。 老师的回答让我联想到之前学的分布式锁中的获取锁,两头一碰,醍醐灌顶,记上小笔记。
2019-04-01
共1条回复

剑指Java面试-Offer直通车 百度资深面试官授课

招聘季即将到来,让百度资深面试官来为你的高薪Offer保驾护航

8427 学习 · 1870 问题

查看课程