SqlServer中的更新锁(UPDLOCK和READPAST)

      UPDLOCK和READPAST,经过UPDLOCK和READPAST的结合咱们可以解决许多问题,好比我当前项目中对于更新预定人数,则用到了UPDLOCK和READPAST,由于考虑到并发若是固定预定人数为100,那么当出现并发时将有可能致使预定超出的状况,利用UPDLOCK则能够解决其余进程过来时对其进行修改的状况,同时结合READPAST解决脏读,同时不会阻塞,当有请求过来时咱们直接利用表变量对预定人数进行更新,若更新失败咱们再进行回滚,算是一个解决方案。同时利用UPDLOCK和READPAST还能够解决其余问题,好比,当有多个并发时咱们要根据筛选条件获取第一值,也就是说第二个请求过来时获取到的值是下一个,那么这样的问题该如何处理呢,若咱们只是简单进行处理,那么第二个请求同时过来时可能也会读取到以前读取的那个值,基于此场景,咱们能够利用UPDLOCK和READPAST来解决。咱们看以下代码就能够理解。数据库

       UPDLOCK  读取表时使用更新锁,而不使用共享锁,并将锁一直保留到语句或事务的结束。UPDLOCK 的优势是容许您读取数据(不阻塞其它事务)并在之后更新数据,同时确保自从上次读取数据后数据没有被更改。并发

       READPAST     指定数据库引擎不读取由其余事务锁定的行。 若是指定了 READPAST,将跳过行级锁。spa

相关文章
相关标签/搜索