在查询的时候怎样实现行锁定?

super_speed 2005-09-05 10:50:27
是这样的,我想一个客户端,从a表中查询出几行,在应用程序端对这几行进行操作
另外的客户在同时也从a表中查询出几行,但他查询的这几行要和第一个客户的记录要不同,也就是说
第一个客户要锁定他查到的那几行,请高手指点,怎样实现行锁定?
第一个客户对他查到的几行有更新操作
我用 select * from a (with ROWLOCK) 好象不行??
请高手指点1
...全文
349 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
bluedesign 2006-04-26
  • 打赏
  • 举报
回复
能不能客户执行查询后的记录集存入客户端的对象里呢?当各客户端提交修改....
lscscar 2006-04-26
  • 打赏
  • 举报
回复

我的目的是在几个客户端同时执行时,只能修改他们各自查的数据,
同问啊??
prcgolf 2005-09-07
  • 打赏
  • 举报
回复
up
fffddd 2005-09-06
  • 打赏
  • 举报
回复
study
haokelea 2005-09-05
  • 打赏
  • 举报
回复
我想,你使用行锁定的目的是为了,只让一个客户端修改选择的数据,但是根本没有这个必要,因为你不能保证,在修改完选择的某条数据后,别的客户端不再修改这条数据,这样就算你保证不能同时修改一条数据,但是之后还是会有可能被修改的。除非你的客户端只有两个,并且只允许对选择的数据修改一次。
super_speed 2005-09-05
  • 打赏
  • 举报
回复
开一个事务后,由于第一个客户端要对他查询出来行进行更新操作,从而该锁定好象自动提升为表锁定,

在没提交第一个事务时
从而使第二个客户端不能查询该表?
super_speed 2005-09-05
  • 打赏
  • 举报
回复
为什么我在查询分析器中1的sql语句为
SET TRANSACTION ISOLATION LEVEL READ COMMITTED
select * from WITH (rowLOCK) where sid = 1


在查询分析器中2的sql语句为
SET TRANSACTION ISOLATION LEVEL READ COMMITTED
select * from scan_a with(READPAST) where sid = 1

一样能查出1的结果?
难道要开一个事务吗?



haokelea 2005-09-05
  • 打赏
  • 举报
回复
可以使用:READPAST 跳过锁定行。
描述:此选项导致事务跳过由其它事务锁定的行(这些行平常会显示在结果集内),而不是阻塞该事务,使其等待其它事务释放在这些行上的锁。READPAST 锁提示仅适用于运行在提交读隔离级别的事务,并且只在行级锁之后读取。仅适用于 SELECT 语句。
super_speed 2005-09-05
  • 打赏
  • 举报
回复
我的目的是在几个客户端同时执行时,只能修改他们各自查的数据,

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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