如果一个用户编辑了一条数据记录,同时另一个用户也编辑了同一条记录并且都保存了。
1.) 并发异常是否总是只发生在一个用户身上?
实际上,第一个获胜是合乎逻辑的,但在技术方面谁是第一个......两个用户都有可能得到这种例外吗?
2.)那个太晚了,现在得到并发异常的人我猜他可以访问
来自其他用户的新更新数据记录是吗?
如果一个用户编辑了一条数据记录,同时另一个用户也编辑了同一条记录并且都保存了。
1.) 并发异常是否总是只发生在一个用户身上?
实际上,第一个获胜是合乎逻辑的,但在技术方面谁是第一个......两个用户都有可能得到这种例外吗?
2.)那个太晚了,现在得到并发异常的人我猜他可以访问
来自其他用户的新更新数据记录是吗?
在Read committed
sql server 的默认隔离级别中:
如果并发请求访问对象,则 sql server 为它们创建队列并一一处理。第二个用户将等待用户 1 完成任务的预定义时间,如果无法在该时间范围内完成任务,则会抛出错误。此时间范围可在 sql server 和 ADO.net 中配置。
这一切都取决于你是否想要并发访问在 sql server 中定义的隔离级别。
1)我认为是的。一个总是比另一个早;没有其他方法可以解决它。所以一个更新会正常工作,另一个会抛出并发异常。
这可能取决于您使用的数据访问方法,可能有一些系统可以更优雅地处理这种情况。但我怀疑有些系统会给两个用户同样的例外情况,而您却没有故意构建这种行为。
正如 Adam Houldsworth 所说:这也可能取决于您自己编码的方式。您可以检查是否有多个用户开始编辑同一记录,然后向两者都抛出异常。但我不相信这就是你真正要问的。如果是这样的话; 我误解了。
2)当然这是可能的,但这取决于你在你的应用程序中构建。只需捕获并发异常并刷新用户 B 尝试更新的任何编辑表单。然后他/她可以再试一次。一般来说很明显;我不知道你的具体情况。