问题描述
|
我遇到了一个非常有问题的问题。
我正在开发一个在线订购系统(现实世界中发生的事件)。用户正在我的站点中订购事件(通过写入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)并检查是否存在冲突。这可能吗?
谢谢!!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)