MSSQL 2008 Update + Order by
От: Spi  
Дата: 07.12.10 09:35
Оценка:
Добрый день!
Помогите разрешить следующую проблему: Есть небольшая табличка (около 10 000 записей), к которой довольно часто обращаются, чтобы получить самую приоритетную запись и поменять её состояние. Был написан примерно такой запрос:

with priorityRecord as
(
   select top(1)
   from someTable
   inner join otherTable on someTable.column1 = otherTable.column1 and 
                            otherTable.column1 = @passedVariable
   where state = 0
   order by column1
)
update priorityRecord
set state = 1
output deleted.*


на таблице someTable есть индекс по колонке column1.

При большой нагрузке этот запрос может выдать одну и ту же запись дважды. Как этого избежать? (не хотелось бы лочить всю таблицу)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.