SQL Server中如何实现行级锁定。

出于某种需要我们有时候会要求实现行级锁定,现实现方法如下:

1.列子数据table_name

 

F1(varchar)      F2(int)

a                       1

b                       2

c                        3

 

F1为主关键字,这个是必须的, 否则是不行的。

 

2.第一个查询:要求对第二条记录锁定,其它可查询或更新操作。

declare @i int

set @i = 0

BEGIN TRAN

while @i < 100

begin

 

     update table_name with (rowlock) set F2 = f2+1WHERE F1='b'

     set @i = @i +1

     waitfor delay '00:00:1' --延迟一秒

end

ROLLBACK TRAN --示例用不需要更新数据

 

3. 第二个查询

SELECT * FROM table_name where F1 != 'b'   --排除与上面更新的关键值

 

如果2不加ROWLOCK 则 3必须等到 2 结束事物后才能查询,加上则OK。

 

 

 

附:很久没有写日志了,如果哪位仁兄或美女对数据并发操作(sql server或oracle)有经验请与我联系~~~~~~~

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值