如何避免两个不同的用户在同一时间为同一个人提交相同的请求

本文关键字:同一个 同一时间 一个人 提交 请求 用户 两个 何避免 | 更新日期: 2023-09-27 18:12:46

如何避免两个不同的用户同时为同一个人提交相同的请求?这是一个帮助台ASP。. NET webforms应用程序,SQL server作为后端。

我的存储过程中有一个事务块,它对请求表执行插入操作。

但是当我和我的同事在几毫秒内测试这个场景时,我们的请求甚至选择了我们在存储过程中验证重复的相同选项

如何避免两个不同的用户在同一时间为同一个人提交相同的请求

首先,您需要定义用于比较两个请求是否相同的逻辑。

从你给我们的信息,我能看到的唯一变量是(a)人(b)时间。例如,2个请求可以被认为是相同的,如果(a)它们属于相同的人员id,并且(b)在X分钟内被记录。

然而,上述规则过于通用,可能会导致丢失有效的请求。所以我建议如下:

    调查为什么不止一个用户可以提交相同的请求。这种情况发生的频率是多少?发生这种情况的原因是什么?有了这些知识,你可能会得到一个非常不同的和更好的解决方案。
  1. 检查要添加到规则中的其他变量,例如请求类型,应用程序。
  2. 如果重复请求的频率非常低,考虑使用通用规则,每当检测到重复时,向用户显示它,并要求确认添加或取消他的新请求。

关于存储过程,您还没有说到建议如何修复它,但是在我看来,任何像这样的阻塞都应该在应用程序代码中实现。你可以使用ConcurrentDictionary来跟踪当前运行的请求,或者阻塞直到它们完成,或者返回某种类型的错误。

也就是说,这听起来像是一个错误的功能。你确定这是必须的吗?对于你想要解决的大问题,有没有更好的解决方案?