将对 sql server 存储过程的请求排队
我正在使用一个存储过程,该过程:
确定表中 selectedBy 列为 null 的行数
选择以下之一这些行随机
更新该行的 selectedBy 列
将该行返回给客户端
如何防止客户端在他们同时选择的情况下选择同一行?
我尝试了各种表提示和隔离级别,但只是在客户端出现死锁异常。我只希望第二个呼叫等待几分之一秒,直到第一个呼叫完成。
I am working with a stored procedure that:
determines the number of rows in the table where the chosenBy column is null
picks one of these rows at random
updates the chosenBy column of this row
returns the row to the client
How do I prevent clients from choosing the same row in situations where they choose at exactly the same time?
I have tried various table hints and isolation levels but just get deadlock exceptions at the client. I just want the second call to wait for the fraction of a second until the first call is completed.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
避免死锁的一种方法(如问题标题所示)是串行访问该过程。
您可以使用
sp_getapplock
和 <代码>sp_releaseapplock请参阅SQL Server 2005 中的应用程序锁(或互斥体) 获取一些示例代码。
One way of avoiding deadlocks (as indicated in your question title) would be to serialise access to that procedure.
You can do this with
sp_getapplock
andsp_releaseapplock
See Application Locks (or Mutexes) in SQL Server 2005 for some example code.