T-SQL并发选择和更新语句

时间:2012-09-18 10:09:29

标签: sql-server tsql select concurrency sql-update

我有2个SQL语句,可以同时执行 当请求处理时,第一个更新来自请求表的请求:

UPDATE Requests
SET IsInProcess = '1'

第二个计算正在处理的请求:

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

我需要在更新声明完成后才计算请求 我需要使用哪些事务隔离级别或表提示来实现此目的?

1 个答案:

答案 0 :(得分:0)

您不必使用任何。 READ COMMITTED和默认锁定会这样做。 (如果更新提前开始,则更新将等到您计算。)

根据您的where子句,服务器可能会对整个表进行X锁定。如果事件没有,则丢失进程将等到获胜进程在第一个更新/读取行上释放锁定。