Это скорее сообщение обмена знаниями.Проблемы параллелизма в счетчике счетчика SQL - проблема выбора/обновления
Недавно в одном из моих проектов я столкнулся с проблемой, которая довольно распространена, но на самом деле не задумывалась, пока я не столкнулся с ней. Существует множество решений, но почему-то я не нашел THE ONE, который я искал, и я собираюсь поделиться этим сообщением. Я уверен, что многие из вас уже знают о нижеследующем решении, но для тех, кто этого не делает, это определенно может быть спасателем жизни. :-)
Проблема:
В последнее время я работал на обслуживание окон. Эта служба должна была вставить некоторые записи в таблицу, которая долго существовала и использовалась несколькими другими старыми службами. Существует столбец (например, «ID»), который содержит целочисленное значение. Логика написана (наверное лет назад), чтобы получить целое число, чтобы вставить в этой таблице указано ниже:
Логика:
- Чтение значения из таблицы (скажем, таблица 1 - имя/значение пара),
- увеличивает его на 1
- обновить значение и
- Наконец получить новое значение [/ выделить].
Код
SELECT @value = [Value] from [dbo].[Table1] WHERE [Name] = @Name;
UPDATE [dbo].[ Table1] SET [Value] = @value +1 WHERE [Name] = @Name;
SELECT @value = @value+1;
Применяемая технология имеет Основные вопросы параллелизм.
- же значение считывается несколько потоками
- Тупик проблема
Каков наилучший способ решения такой проблемы - Учитывая это упоминается во многих различных приложениях/услугах?
Не могли бы вы отредактировать вопрос, чтобы он содержал только вопрос и создал отдельный ответ с вашим решением? См. [Можно ли ответить на мой собственный вопрос?] (Http://stackoverflow.com/help/self-answer) для получения дополнительной информации. – sstan
И, возможно, добавить ссылки на документацию. Что такое 'OUTPUT insert 'и это для всех rdbms или для одного в частности? –
Где приложение? –