2012-10-29 3 views
0

Я создал приложение C#, которое работает с сетью. И я использую SQL Server 2008 Express для своего приложения.Заблокировать таблицу перед ее вставкой

Моя проблема:

Когда 2 человека на 2-х компьютеров в точности то же время нажмите на кнопку Insert, 2 строки добавляются в базу данных с тем же числом (то есть неисправность).

Если время не такое же, мое приложение проверяет некоторые условия, и эта проблема не возникает.

Мой вопрос:

Теперь я хочу заблокировать таблицу перед вставкой на 1 человека и открыть таблицу после вставки.

Как это сделать?

+1

Как Вы управляете первичным ключом? То, что вы видите, вероятно, связано с плохой практикой в ​​определении таблицы. Вероятно, вы должны позволить DB управлять первичными ключами ... –

+0

Я знаю. Я сделаю столбец идентификатора, который является основным столбцом, но для некоторых причин у меня есть другой столбец, который должен быть основным в этом случае. –

+0

Одно слово: *** НЕ ДЕЛАЙТЕ ЭТО! *** Вам нужно ** исправить ** свою рутину, которая определяет * номер *, который вызывает проблему. Блокировка всей таблицы - это ** НЕ ** решение вашей проблемы! –

ответ

0

Вы должны использовать колонку IDENTITY.

если вы хотите заблокировать таблицу в SQL-сервере вы можете сделать, как этот

INSERT INTO Table1 WITH (TABLOCK) 
SELECT @Col1, @Col2, @Col3, @Col4 OPTION (FAST 1) 

UPDATE Table1 WITH (TABLOCK) 
SET Col5 = @Col5 
WHERE @Col1 = @Var 

UPDATE Table2 WITH (TABLOCK) 
SET Col = @ColVal 
+1

Если кто-то собирается голосовать, они должны объяснить, почему ... –

Смежные вопросы