接受实际更改以在数据库C#,MS SQL中更新

时间:2015-05-28 07:45:17

标签: c# sql-server ado.net

情况是:我有一些专用客户端(终端)和一个数据库,操作按以下顺序执行:

  1. 第一个客户端从数据库中获取实际行
  2. 第二个客户端从数据库中获取实际行
  3. 第一个客户端进行一些更改并更新数据库行
  4. 第二个客户端尝试更新同一行,但此版本比firstclient旧 - 存在冲突。
  5. 如何更好地解决它? MS SQL服务器中是否有一些解决方案?

1 个答案:

答案 0 :(得分:1)

乐观并发用于检测此冲突,听起来您已经能够检测到它。

通常,您采用两种方法中的一种,最后一次是在总是覆盖更改的胜利中,或者在第二次写入失败的第一次胜利中。

如果第二次写入失败,那么您通常会向用户显示一条消息,表明数据已更改且更改将丢失,然后您刷新数据。

另一种选择是向他们展示他们当前的编辑,然后在刷新后显示数据(第一次保存的编辑),并让他们选择是否要覆盖更改。

此过程称为冲突解决方案,您采用的方法取决于您的用户是谁以及有关数据的业务规则。