本帖最后由 shaokun85 于 2010-04-18 07:28:14 编辑

解决方案 »

  1.   

    使用锁机制
    SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
    begin tran
    select * from tablename with (rowlock) where id=1
    waitfor delay '00:00:05'commit tran
    SELECT * FROM table WITH (HOLDLOCK)  
    SELECT * FROM table WITH (HOLDLOCK)  
    其他事务可以读取表,但不能更新删除
    SELECT * FROM table WITH (TABLOCKX)  
    其他事务不能读取表,更新和删除
      

  2.   

    我需要锁住当前查询出来的数据,不允许其他用户再次获取,且用户可以跳过以获取其他数据,下面这样正确吗?请指点。
    begin TRANSACTION 
    declare @id int
    select @id=id from t1 with(xlock,READPAST) where b is null
    if(@id<>0)
    begin
    update t1 set b = getdate();
    select * from t1 where id=@id
    end
    commit