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;
第二个会话被堵了 为什么?? 展开
一个会话输入select * from text for update of a;
另一个输入select * from text for update of b;
第二个会话被堵了 为什么?? 展开
2个回答
展开全部
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表
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表
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询