UPDLOCK是更新锁,其他事务可以只读,但不能更新,直接用此锁,不会死锁;
而HOLDLOCK是共享锁,可以再升级为更新锁,但有个条件,必须其他事务将共享锁释放,若另一事务也想升级为更新锁,而不释放共享锁时,就出现了死锁.

解决方案 »

  1.   

    例如:
    begin trans
    select ....with(updlock)
    update.........
    commit trans另一个是update .......
    -------------------
    UPDLOCK更新锁,如果其他用户在update相同资源不就产生堵塞吗?
      

  2.   

    第一个执行COMMIT TRANS后,就将锁解开了;这样才能保证,只有在第一个UPDATE完成后,第二个UPDATE才能执行。