select .. for update 的问题

一个表text有A、B两个字段一个会话输入select*fromtextforupdateofa;另一个输入select*fromtextforupdateofb;第二个... 一个表text 有A、B两个字段
一个会话输入select * from text for update of a;
另一个输入select * from text for update of b;
第二个会话被堵了 为什么??
展开
 我来答
psychic0111
推荐于2017-10-13 · TA获得超过999个赞
知道小有建树答主
回答量:463
采纳率:100%
帮助的人:219万
展开全部
for update of columns 用在多表连接锁定时,可以指定要锁定的是哪几张表,而如果表中的列没有在for update of 后面出现的话,就意味着这张表其实并没有被锁定,其他用户是可以对这些表的数据进行update操作的。这种情况经常会出现在用户对带有连接查询的视图进行操作场景下。用户只锁定相关表的数据,其他用户仍然可以对视图中其他原始表的数据来进行操作。

select * from emp e,dept d where e.deptno = d.deptno for update; --对二张表都进行了整表锁定

select * from emp e,dept d where e.deptno = d.deptno for update of d.deptno; --只锁定了dept表
xeonol
2011-02-18 · TA获得超过870个赞
知道小有建树答主
回答量:528
采纳率:0%
帮助的人:701万
展开全部
for update是写锁,而且你select *是锁住所有行,第二个会话就会被block了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式