Существует ли параллелизм с UPDATE count = count + 1? - PullRequest
2 голосов
/ 09 июня 2009

Я хотел знать, у меня возникнет проблема с параллелизмом?

Это НЕ в транзакции. Этот код для Sqlite(prototype), но я планирую использовать его либо с MySql, либо с SQL от MS

                command.CommandText =
                    "UPDATE tag_name SET count = count+1 "+
                    "WHERE tagid=@tagid";
                command.Parameters.Add("@tagid", DbType.Int64).Value = tagId;
                command.ExecuteNonQuery();

Ответы [ 4 ]

4 голосов
/ 09 июня 2009

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

4 голосов
/ 09 июня 2009

Я могу ошибаться, но я не думаю, что у вас будут проблемы; таблица tag_name, я думаю, будет заблокирована, пока происходит ОБНОВЛЕНИЕ, так что любые другие обновления, ожидающие выполнения, будут по существу поставлены в очередь, а не происходят одновременно.

2 голосов
/ 09 июня 2009

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

Даже если вы измените УРОВЕНЬ ИЗОЛЯЦИИ СДЕЛКИ, он должен работать нормально, по крайней мере, на SQLServer.

2 голосов
/ 09 июня 2009

Я так не думаю, я смутно помню, как видел что-то подобное в примере лучших практик SQL-сервера от Microsoft.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...