begin tran
    select * from table with (ROWLOCK) where 条件
    -- 此时加锁至事务结束
    ....commit

解决方案 »

  1.   

    CREATE PROCEDURE lock_record1
    @user_id int 
    AS
      select *  from login with (HOLDLOCK) where id=@user_id 
    ****由于别的统计可能用到该记录所以只能放置共享锁。******
      go CREATE PROCEDURE lock_record2
    @user_id int 
    AS
      SET LOCK_TIMEOUT 0
      update login set lock_bz=1  where id=@user_id
      SET LOCK_TIMEOUT -1
      go 在你的PB应用程序中(由于我对PB不熟,只能这样)
      调用lock_record2
      
      if 失败
        begin 
          print '不允许两次登陆!'
          return
        end
    endif  BEGIN TRANSACTION     调用lock_record1 放共享锁    保持该连接始终有效
      
        .....  程序结速时再END TRANSACTION 我在VB/vfp+server2000下通过