我想对表中符合某一关键字的数据进行锁定,其他用户只能读不能改!
锁定是简单,但一旦在事务中锁定了,其他用户试图修改时无任何提示,在等待你的事务的完成!
能不能在其他用户试图修改之前,有个提示呢?
如:该单已有网络上其他操作员受理,请选择另外的单据!

解决方案 »

  1.   

    select req_mode,... from master.dbo.syslockinfo 
    where 
    rsc_dbid=(select dbid from master.dbo.sysdatabases where name='TEST') 
    AND rsc_objid=(select id from sysobjects where name='TABLE..')其中:req_mode tinyint
     锁请求模式。该列是请求者的锁模式,并且代表已授权模式,或代表转换或等待模式。0 = NULL。不授权访问资源。用作占位符。1 = Sch-S(架构稳定性)。确保在任何会话持有对架构元素(例如表或索引)的架构稳定性锁时,不删除该架构元素。2 = Sch-S(架构修改)。必须由要更改指定资源架构的任何会话持有。确保没有其他会话正在引用所指示的对象。3 = S(共享)。授予持有锁的会话对资源的共享访问权限。4 = U(更新)。指示对最终可能更新的资源获取的更新锁。用于防止常见形式的死锁,这类死锁在多个会话锁定资源并且稍后可能更新资源时发生。5 = X(排他)。授予持有锁的会话对资源的独占访问权限。6 = IS(意向共享)。指示有意将 S 锁放置在锁层次结构中的某个从属资源上。7 = IU(意向更新)。指示有意将 U 锁放置在锁层次结构中的某个从属资源上。8 = IX(意向排他)。指示有意将 X 锁放置在锁层次结构中的某个从属资源上。9 = IU(共享意向更新)。指示对有意在锁层次结构中的从属资源上获取更新锁的资源进行共享访问。10 = IX(共享意向排他)。指示对有意在锁层次结构中的从属资源上获取排他锁的资源进行共享访问。11 = IX(更新意向排他)。指示对有意在锁层次结构中的从属资源上获取排他锁的资源持有的更新锁。12 = BU。由大容量操作使用。13 = RangeS_S(共享键范围和共享资源锁)。指示可串行范围扫描。14 = RangeS_U(共享键范围和更新资源锁)。指示可串行更新扫描。5 = RangeI_N(插入键范围和空资源锁)。用于在将新键插入索引前测试范围。16 = RangeI_S。通过 RangeI_N 和 S 锁的重叠创建的键范围转换锁。17 = RangeI_U。通过 RangeI_N 和 U 锁的重叠创建的键范围转换锁。18 = RangeI_X。通过 RangeI_N 和 X 锁的重叠创建的键范围转换锁。19 = RangeX_S。通过 RangeI_N 和 RangeS_S 锁的重叠创建的键范围转换锁。20 = RangeX_U。通过 RangeI_N 和 RangeS_U 锁的重叠创建的键范围转换锁。21 = RangeX_X(排他键范围和排他资源锁)。这是在更新范围中的键时使用的转换锁。
    集体syslockinfo表具体内容,可看SQL联机帮助