如何避免两个不同的用户同时为同一个人提交相同的请求? 这是一个以SQL Server作为后端的帮助台ASP.NET webforms应用程序。
我的存储过程中有一个事务块,用于插入请求表。
但是当我的同事和我在几毫秒内测试了这个场景时,我们的请求甚至选择了我们在存储过程中验证重复的相同选项。
答案 0 :(得分:1)
首先,您需要定义用于比较2个请求是否相同的逻辑。
根据您提供给我们的信息,我能看到的唯一变量是(a)人(b)时间。 例如,如果(a)它们属于同一个人id并且(b)在彼此的X分钟内被记录,则可以认为2个请求是相同的。
但是,上述规则过于通用,可能导致失去有效请求。所以我建议如下:
答案 1 :(得分:0)
你还没有充分说明你的存储过程建议如何解决它,但在我看来,这样的任何阻塞应该在应用程序代码中实现。您可以使用ConcurrentDictionary来跟踪当前正在运行的请求,并阻止它们完成或返回某种错误。
那就是说,这听起来像是一个错误的特征。你确定这是必需的吗?是否有更好的解决方案来解决您想要解决的重大问题?