用例子来说明SQL Server的更新锁

1:首先创建表,插入数据:

create table table1(A nchar(10) not null primary key,B nchar(10),C nchar(10));

insert into table1(A,B,C) values('a1','b1','c1');
insert into table1(A,B,C) values('a2','b2','c2');

insert into table1(A,B,C) values('a3','b3','c3');

2:打开一个sqlserver的查询窗口,执行下面的代码(使用了更新锁)

begin tran
select * from table1(updlock) 
waitfor delay '00:00:30' --等待30秒
update table1 set B='bb' where A='a2'
commit tran


3:打开第二个查询窗口,执行下面的代码。(使用了更新锁)

begin tran
select * from table1(updlock) 
commit tran

4:打开第三个查询窗口,执行下面的代码(不使用更新锁)

begin tran
select * from table1
commit tran

5:测试结果,更新锁与更新锁互斥,第二个查询窗口的查询语句要等第一个的事务执行完才会运行,第三个是共享锁,共享锁和更新锁不互斥,第三个查询可以运行,不用等待第一个事务执行完。

截图如下:

1)第一查询窗口:



2)第二个查询窗口:



3:第三个查询窗口:




6:提一个问题,如何在java程序中实现更新锁呢?

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值