关于行锁定的问题,请大家进来指点一下,谢谢了

szjay 2004-11-03 09:23:46
对一个表有如下操作:
1.select RecNo from tTable where Tablename = 'xxx'
2.其它一些耗时操作
3.update tTable set RecNo = RecNo + 1 where TableName = 'xxx'

我想在第一步时,就锁定tTable表的某一行(符合TableName = 'xxx'的那一行),但并不锁定tTable表的其它行,因为有其他用户也同时在操作tTable的其它行,且在操作第二步的时候,这个锁定也不解开,直到运行完第三步时才解锁,请问有什么办法?
...全文
168 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
szjay 2004-11-03
  • 打赏
  • 举报
回复
呵呵,谢谢邹建大哥,邹建大哥不愧是MS SQL Server版里“最接近于神的男人”,小弟佩服
zjcxc 元老 2004-11-03
  • 打赏
  • 举报
回复
--设置事务锁定行为
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ

--开始事务
begin tran
--行级锁
select RecNo from tTable with (rowlock) where Tablename = 'xxx'

--2.其它一些耗时操作
--3.
update tTable set RecNo = RecNo + 1 where TableName = 'xxx'
commit tran

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧