出于某种需要我们有时候会要求实现行级锁定,现实现方法如下:
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)有经验请与我联系~~~~~~~