级别使用 REPEATABLE READ ,为了防止用户不小心还没提交就退出而导致锁还在,先执行 WHILE (@@TRANCOUNT > 0) BEGIN COMMIT TRANSACTION; END
然后开始操作 BEGIN TRANSACTION; select * from tb1 with(ROWLOCK) where id = '1'在两台机做试验,A机器先进入操作界面不退出,查询分析器无法对记录进行update操作,预计功能正常运行,然后B机器进去操作界面,结果发现B可以操作,而A反而不能操作了,并提示该记录被锁了,查询分析器依然无法update该记录,然后B操作完,A也可以操作,查询分析器也可以update,也就是说,A的锁被B解除了?

解决方案 »

  1.   

    发现问题了,两个机器加了两把锁,然后先按提交的那个就会把自己的那把锁解除掉,而别人的锁还在,于是A无法提示无法操作,而B就可以操作了,调过来,如果B先提交,它也会无法操作而把自己的锁解除,然后A又变得可以操作
    如何让锁先到先锁?还有 EXEC   SP_LOCK   出来的那堆东西是怎么个看法?
      

  2.   

    不明白没有 BEGIN TRANSACTION ,如何可以直接 COMMIT TRANSACTION 呢? 直接在查询分析器里面都执行通不过