如何防止两个用户从sql server访问相同的数据

时间:2013-10-30 08:30:19

标签: c# sql-server

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

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

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

2 个答案:

答案 0 :(得分:0)

你有多种解决方案。

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

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

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

答案 1 :(得分:0)

添加三列

  1. 版本(时间戳)
  2. editBy编辑记录的用户的外键
  3. editAt(日期时间)
  4. 工作流程

    1. 获取所有记录
    2. 允许编辑所有记录,其中editBy为null或editBy == currentUser
    3. 在打开表单上执行exec命令更新记录集@editBy = currentUser,@ editAt = getdate()其中@ id = id和@version = currentVersion 并检查受影响的行。如果是1条记录,那么我们处于编辑模式,如果不是刷新记录。
    4. 在保存记录更改字段(editBy,editAt)上。
    5. 用于处理编辑超时的其他服务器逻辑。例如不超过30分钟。