-1

我想在用户运行时插入具有唯一字段的表中。
例子:

  • b 是唯一字段。
  • 在我的 c# 代码中,我正在这样做;
  • get_max(b);
  • y = b+1;
  • 插入 table1 (a, b, c, d) 值 (@x, @y, @z, @t)
  • 但是当我想插入时,用户正在使用这个表。所以我看到“b”字段的重复记录错误。

我可以在插入之前分配一些记录还是我能做什么?

4

1 回答 1

2

您不能在插入之前分配记录,您要么必须锁定表,要么将插入放入带有重试逻辑的 try catch 块中。

例如;

int maxRetries = 3;

for (int i = 0; i < maxRetries; i++)
}
    try
    {
        //insert
        break;
    }
    catch (Exception e)
    {
        y = get_max(b) + 1; //get the max again since the failure is due to
        // another record incrementing that value
        if (i == maxRetries - 1)
           throw e;
        // all retries failed so it's time for that exception to bubble up
    }
}   
于 2013-05-03T21:18:31.933 回答