我需要根据表中的值更新表。整个表格将被更新,我想确保SQL-Server将为我处理锁定。我知道我可以使用WITH(LOCKTYPE)
。但是我的更新将是:
SELECT MyTable.ID, MyTable.Cost
INTO #tempTable from MyTable
-- More complex calculations here
UPDATE MyTable
SET MyTable.Cost = #tempTable.Cost+1
FROM #tempTable
WHERE MyTable.ID = #TempTable.ID
我想确保我可以锁定整个表,以便如果另一个请求进入更新表,则必须等待,但理想情况下,如果有读取请求,则会对其进行处理。这可能吗?
过程:
在SP中,一旦发生第1步,我不希望处理对SP的任何其他调用,我希望它们坐在队列中。因为每次更新都取决于表中已有的值,所以我不能允许对SP的另一次调用从表中读取。
通常,SP需要串行运行,不应允许SP同时运行两次。我不介意调用是否通过,SELECT是否排队,但一旦选择发生,另一个选择(在SP内)不允许在另一个线程中发生。
答案 0 :(得分:0)