如何在insert/select Sql server上执行条件锁定?
表如何在insert/select Sql server上执行条件锁定?,sql,sql-server,sql-server-2008,concurrency,locking,Sql,Sql Server,Sql Server 2008,Concurrency,Locking,表Meta\u缓存([Value]NVARCHAR(MAX),[UserID]NVARCHAR) 我有一个为每个用户插入5行的存储过程 每个用户都可以有多个并发调用,来自特定UserID的第一个调用插入一组值,其他调用只读取该UserID的值。通过检查这不起作用 if exists(Select 1 from Meta_cache Where UserID = @UserID) 当有多个并发调用时 我想使用特定的锁定机制,有条件地锁定特定UserID的行,而另一个用户不会受到锁定的影响 我只是
Meta\u缓存
([Value]NVARCHAR(MAX)
,[UserID]NVARCHAR
)
我有一个为每个用户插入5行的存储过程
每个用户都可以有多个并发调用,来自特定UserID
的第一个调用插入一组值,其他调用只读取该UserID
的值。通过检查这不起作用
if exists(Select 1 from Meta_cache Where UserID = @UserID)
当有多个并发调用时
我想使用特定的锁定机制,有条件地锁定特定UserID
的行,而另一个用户不会受到锁定的影响
我只是引用了一些来自
行锁定总是会导致页面锁定和表锁定
UPDATE
Employee WITH (ROWLOCK)
SET FullName='John Does'
WHERE Department = 'IT'
通过将查询封装在SQL事务中,始终可以避免竞争条件