我在存储过程中把一段SQL包含在事务中来执行,是不是就可以避免多人同时执行这段SQL?
我存储过程中有个多个更新某个表的语句,我不想让多人同时执行这些语句,于是把它们包含在事务语句中,这样,是不是就不用再上锁,达到了并发控制的目的呢?
即:
begin tran
delete ....
update.....
commit tran
------解决方案--------------------那要看SQL Server对事务中第一条语句加的是什么锁、什么粒度
------解决方案--------------------差不多.
不过, 锁的是资源(例如, 你的update, 锁的是表, 或者是粒度更细的页或者行)
所以基本上, 其他上还是可以执行这些语句, 只是因为相关的资源被锁定, 所以被阻塞不往下执行而已.
------解决方案--------------------我认为应该是这样
长时间处于等待处理状态的事务会阻止其他用户访问锁定的资源。