2012-09-18 75 views
0

我有2个SQL语句,可以同时执行。
一日一更新的请求表请求,当请求采取的处理:在过程T-SQL并发选择和更新语句

UPDATE Requests 
SET IsInProcess = '1' 

第二届一个计数请求:

SELECT COUNT(*) 
FROM Requests 
WHERE IsInProcess = '1' 

我需要计数请求更新语句完成之后。
需要使用哪些事务隔离级别或表提示来完成此操作?

+0

我不确定“只有在更新语句完成后,我才需要对请求进行计数。”意思是说 - 但只要你有多个活动并行发生,任何计算结果都可能会过时,甚至在你采取行动的价值之前。 –

回答

0

你不必使用任何。 READ COMMITTED和默认锁定将做到这一点。 (如果更新开始时间稍早,否则更新将一直等到您计数。)

鉴于您的where子句,很可能服务器将在整个表上执行X锁定。事件如果没有,失败进程将等待获胜进程释放对第一个更新/读取行的锁定。