我正在使用以下存储过程:
确定表中selectedBy列为空的行数
随机选择其中一行
更新此行的selectedBy列
将行返回到客户端
如何防止客户在完全同时选择的情况下选择同一行?
我尝试了各种表提示和隔离级别,但只是在客户端获得死锁异常。我只是希望第二次调用等待一秒钟,直到第一次调用完成。
答案 0 :(得分:2)
避免死锁的一种方法(如问题标题所示)将序列化对该过程的访问。
您可以使用sp_getapplock
和sp_releaseapplock
有关示例代码,请参阅Application Locks (or Mutexes) in SQL Server 2005。