日期:2014-05-19  浏览次数:20491 次

我在存储过程中把一段SQL包含在事务中来执行,是不是就可以避免多人同时执行这段SQL?
我存储过程中有个多个更新某个表的语句,我不想让多人同时执行这些语句,于是把它们包含在事务语句中,这样,是不是就不用再上锁,达到了并发控制的目的呢?

即:
begin   tran
     
      delete   ....
      update.....

commit   tran

------解决方案--------------------
那要看SQL Server对事务中第一条语句加的是什么锁、什么粒度
------解决方案--------------------
差不多.

不过, 锁的是资源(例如, 你的update, 锁的是表, 或者是粒度更细的页或者行)
所以基本上, 其他上还是可以执行这些语句, 只是因为相关的资源被锁定, 所以被阻塞不往下执行而已.


------解决方案--------------------
我认为应该是这样
长时间处于等待处理状态的事务会阻止其他用户访问锁定的资源。