0

我真的不知道防止两个用户从 sql server 访问相同数据的最佳方法是什么。我使用 c# 开发了一个 win 应用程序,用户单击记录以对其进行修改。当用户单击记录时,会显示一个新表单,其中包含用户可以修改数据的数据。假设我的应用程序在两台电脑上运行并且两个用户打开相同的记录然后谁最后更新将保存在数据库中的相同数据。

所以我做了什么...每当任何用户打开数据记录时,我都会创建一个表并在该表中存储记录 ID。如果记录 ID 存储在表中,那么下次另一个用户无法访问该数据,而是获取正在处理的消息这个记录。这样我的目的就解决了,但我不知道这是正确的还是最好的方法。

所以大家告诉我如何用最好的方法处理这种情况。谢谢

4

2 回答 2

0

你有多种解决方案。

如果您只在短时间内访问一个表,则可以创建行锁。

您可以在获取数据和写入数据之间创建事务。但是您应该始终注意称为杯咖啡的综合症:p人们检索数据,离开并阻止数据。

尝试让用户修改、保存和比较您在 c# 代码中的先前结果,如果不同,请向客户提供建议。如果他接受打开交易然后保存

于 2013-10-30T08:33:35.187 回答
0

添加三列

  1. 版本(时间戳)
  2. editBy外键给编辑记录的用户
  3. 编辑时间(日期时间)

工作流程

  1. 获取所有记录
  2. 允许使用 editBy 为 null 或 editBy == currentUser 编辑所有记录
  3. 在打开表单执行命令更新记录集@editBy = currentUser、@editAt=getdate() where @id=id 和@version = currentVersion并检查受影响的行。如果有 1 条记录,那么我们处于编辑模式,如果没有刷新记录。
  4. 在保存记录更改字段(editBy,editAt)回来。
  5. 处理版本超时的附加服务器逻辑。例如不超过 30 分钟。
于 2013-10-30T08:38:46.020 回答