Обновите количество (поле) безопасно в SQL

это работает как магия

, помещенная в ваш файл css после

.highcharts-container {
    width:100% !important;
    height:100% !important;
}
5
задан Michael Petrotta 3 June 2009 в 00:49
поделиться

3 ответа

Я предполагаю, что вам также нужен новый счетчик, в противном случае это не проблема, просто обновите set count = count + 1.

Если ваша база данных поддерживает предложение вывода при UPDATE (например, SQL Server 2K5 или 2K8):

UPDATE table
   SET count = count + 1
   OUTPUT inserted.count
   WHERE id=@id;

в противном случае:

begin transaction
update table 
    set counter=counter+1
    where id=@id;
select counter
    from table
    where id=@id;
commit;
14
ответ дан 13 December 2019 в 05:41
поделиться

SET Count = Count + 1 - ИМХО, самое простое решение.

В более общем плане концепция возможности получать данные, обрабатывать их, и пока они обрабатываются, не должно быть никаких основных изменений перед записью результатов обработки обычно нецелесообразно иметь, если вам также требуется масштабируемая система.

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

ИМХО, лучший подход - выбрать оптимистичный маршрут и обнаружить / повторить попытку, если в необычном случае что-то, о чем вы заботитесь, действительно изменилось.

SELECT Count AS old ... FROM ...

.. processing ...

UPDATE ... SET Count = oldplus1 ГДЕ Count = old AND ...

Если UPDATE не предоставит вам ожидаемое количество строк, вы предполагаете, что данные были изменены, и повторите попытку, пока не добьетесь успеха.

0
ответ дан 13 December 2019 в 05:41
поделиться

Псевдокод:

begin transaction
A = select count from tag_data where tagId = TagId
update tag_data set count = A+1 where tagId = TagId
commit
end transaction

Я настоятельно рекомендую создать хранимую процедуру с именем, скажем, increment_tag (TagId) , который выполняет вышеуказанное :)

-2
ответ дан 13 December 2019 в 05:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: