【问题标题】:T-SQL concurrent select and update statements [closed]T-SQL 并发选择和更新语句 [关闭]
【发布时间】:2012-09-10 14:06:40
【问题描述】:

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

UPDATE Requests
SET IsInProcess = '1'

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

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

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

【问题讨论】:

  • 我不确定“我需要在更新语句完成后才计算请求数”是什么。意思是 - 但是一旦您有多个活动并行发生,任何计算结果都可能在您根据其值采取行动之前就已经过时了。

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


【解决方案1】:

你不必使用任何。 READ COMMITTED 和默认锁定将做到这一点。 (前提是更新开始得早一点,否则更新会等到你计算在内。)

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

【讨论】:

    猜你喜欢
    • 2018-01-22
    • 2020-09-09
    • 1970-01-01
    • 1970-01-01
    • 2016-04-24
    • 2014-04-14
    • 1970-01-01
    • 1970-01-01
    • 2013-10-08
    相关资源
    最近更新 更多