Как организовать «Очередь» запросов в MS SQL
От: Аноним  
Дата: 24.06.10 10:29
Оценка:
Имею таблицу T

Несколько пользователей могут примерно одновременно вызывать процедуру:

1: select from T

2: if then update T


То есть решение об изменении данных в T строится на содержимом T.

Теперь предположим пользователь А вызвал эту процедуру и выполнился первый её шаг, когда процедуру вызвал пользователь Б, соответственно у обоих на втором шаге произойдет Update T. Если бы Б вызвал процедуру чуть позже (после шага 2 у пользователя А), то if then не сработал бы и результат был бы другой («Правильный» -- тот что надо).


Наглядный пример

SELECT @r = count(*) FROM T

if 1 = dbo.Четное(@r) 
begin
 UPDATE T SET [поле] = 5;
end



Подскажите как сделать такую «монолитную транзакцию»?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.