从并行MYSQL(.NEt连接器)事务中读取
|
我遇到了一个非常有问题的问题。
我正在开发一个在线订购系统(现实世界中发生的事件)。用户正在我的站点中订购事件(通过写入MYSQL DB的.NET Web服务来实现)。
这2个相关的表是:EVENTS和EVENTonFIELD(FIELD是用户正在订购的资源)。 (用户可以订购单个或多个资源)
我的问题是-阻止同时订购同一资源(可能是通过并行调用我的W.S)。该实现是一个MYSQL .NET连接器(在C#中)事务,其中包括对EVENTS和EVENTonFIELD的插入(以及其他逻辑)。
我遇到了这样的情况:我有事务A和事务B(两者相同:相同的用户X,资源Y和时间Z)。
执行事务A(在我确认资源可用之后)。
在这段时间内(尚未提交tn A),将执行事务B(当我验证资源是否可用时,由于tn A尚未提交,因此我看到资源可用)。
然后-A已提交,B已提交,并且:
我为此用户有两次活动。
我在这里不能使用主键,因为在某些情况下,我允许双重资源排序。
有什么想法如何预防这种情况?
我唯一想到的是在事务B期间,以某种方式还读取并行事务(A)并检查是否存在冲突。这可能吗?
谢谢!!
没有找到相关结果
已邀请:
0 个回复