我有一个由多个线程使用的表。我的要求是我不希望任何其他用户在我指定的范围之间插入任何行。但是当应用(holdlock)提示时,sql server会对整个表进行锁定。 我的问题是
pending
- 这里我不希望任何其他用户在id 1和3之间插入或更新并记录。但是我现在不允许从另一个会话中插入任何行。如果我尝试插入一行,则会被阻止。即使我尝试更新ID = 4的行仍然被阻止。 该表在id列上具有聚簇索引,在列firstname,lastname上具有非聚簇索引。
答案 0 :(得分:0)
一个有2列的表; [id]和[value]。 [id]列的类型为INT,[value]可以是356366.我可以阻止用户使用类似
之类的内容插入[id]在1和3之间的行DECLARE @id INT = 1
INSERT INTO dbo.Table_1 (
id
,value
)
SELECT TOP 1 @id
,356366
FROM master.dbo.spt_values
WHERE @id NOT BETWEEN 1
AND 3
或者,阻止他们使用
之类的内容进行更新DECLARE @id INT = 1
UPDATE dbo.Table_1
SET [value] = 356366
WHERE id = @id
AND @id NOT BETWEEN 1
AND 3