чтение из параллельных транзакций MYSQL (.NEt) - PullRequest
0 голосов
/ 26 мая 2011

Я столкнулся с очень проблемной проблемой.Я разрабатываю систему онлайн-заказа (события, которые происходят в реальном мире).пользователь заказывает событие на моем сайте (реализация осуществляется веб-службой .NET, которая записывает в базу данных MYSQL).2 соответствующие таблицы: EVENTS и EVENTonFIELD (FIELD - это ресурс, который заказывает пользователь).(пользователь может заказать один или несколько ресурсов)

Моя проблема заключается в том, чтобы предотвратить заказ одного и того же ресурса в одно и то же время (возможно, путем параллельного вызова моего WS).реализация представляет собой транзакцию коннектора MYSQL .NET (в C #), которая включает вставку в EVENTS и EVENTonFIELD (среди прочего).

Я попал в ситуацию, в которой у меня есть транзакция A и транзакция B (обаидентично: тот же пользователь X, ресурс Y и время Z).

Транзакция A выполняется (после того, как я проверил, что ресурс доступен).в течение этого времени (tn A еще не зафиксировано) выполняется транзакция B (когда я проверяю, доступен ли ресурс, я вижу, что он доступен, поскольку tn A еще не зафиксировано).затем - A фиксируется, B фиксируется и:

У меня есть двойное событие для этого пользователя ..

Я не могу использовать первичный ключ здесь, так как в некоторых случаях я разрешаю двойное упорядочение ресурсов,Есть идеи, как предотвратить такие случаи?

единственное, о чем я подумал, - это во время транзакции B, каким-то образом читать также параллельные транзакции (A) и проверять, нет ли столкновения ... возможно ли это?

Спасибо !!

...