Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在insert/select Sql server上执行条件锁定?_Sql_Sql Server_Sql Server 2008_Concurrency_Locking - Fatal编程技术网

如何在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事务中,始终可以避免竞争条件