Запретить вставку данных в таблицу одновременно - PullRequest
1 голос
/ 12 января 2011

Я работаю над сайтом онлайн-продаж.Я использую C # 4,0 и SQL Server 2008, и я хочу контролировать и предотвращать одновременную вставку пользователей в таблицу, как dbo.orders ... Как я могу это сделать?

Ответы [ 3 ]

0 голосов
/ 14 января 2011

Вставки не будут проблемой, но обновления могут быть. Термин, который вам нужно исследовать - это параллелизм в базе данных. Есть четыре основных модели, которые вы можете реализовать, каждая из которых имеет свои плюсы и минусы. Некоторые из них лучше подходят для определенных ситуаций, и в Интернете есть сотни статей на эту тему.

0 голосов
/ 14 января 2011

Вы пытаетесь решить эту проблему в коде C # в SQL?Потому что в SQL все просто.Если вы добавите BEGIN TRAN в начале хранимой процедуры и COMMIT в конце, это будет действовать как блокировка в C #, предотвращая одновременное выполнение кода, эффективно сериализуя запросы.Поэтому, если есть две вставки, они будут выполняться одна за другой.Следует помнить, что это будет блокирующая операция, то есть вторая вставка не начнется, пока не завершится первая (независимо от того, успешно она или нет).

0 голосов
/ 12 января 2011

В вашем методе Add вы можете использовать блокировку с помощью ключевого слова lock, это позволит использовать один поток за раз.

...