因为是多客户端操作的,所以希望在更新的时候,可以把表用排他锁锁住,其他用户不可以查询和修改之前看到相关问题里面提到 WITH   (XLOCK) ,我这里可以用这个吗? WITH   (XLOCK) 用完之后要不要手动释放的?最后说下,不要事务的

解决方案 »

  1.   

    update tb
    set ...
    FROM tb WITH (TABLOCKX) 
      

  2.   

    TABLOCKX---该锁可以防止其它事务读取或更新表,并在语句或事务结束前一直持有。 
      

  3.   

    1 如何锁一个表的某一行A 连接中执行SET TRANSACTION ISOLATION LEVEL REPEATABLE READbegin transelect * from tablename with (rowlock) where id=3waitfor delay '00:00:05'commit tranB连接中如果执行update tablename set colname='10' where id=3 --则要等待5秒update tablename set colname='10' where id<>3 --可立即执行2 锁定数据库的一个表SELECT * FROM table WITH (HOLDLOCK) 
    注意: 锁定数据库的一个表的区别SELECT * FROM table WITH (HOLDLOCK) 
    其他事务可以读取表,但不能更新删除SELECT * FROM table WITH (TABLOCKX) 
    其他事务不能读取表,更新和删除