|
|
|
| Разбираюсь с транзакциями MySQL. Ситуация такая. Есть база данных некоторых изделий, к примеру, мебель. Несколько пользователей должны иметь возможность редактирования данных. Использую транзакции в режиме AUTOCOMMIT = 0. Теперь вопрос. Два пользователя одновременно пытаются изменить цену товара. Первый отдает команду SET TRANSACTION и начинает редактирование данных(выполняет соответствующие запросы). В это же время второй пользователь с другого компьютера аналогично подает команду SET TRANSACTION и также приступает к редактированию записей. ЧТО БУДЕТ С ДАННЫМИ ПОСЛЕ ЗАВЕРШЕНИЯ ТРАНЗАКЦИЙ? Программирую на С# в MS VS 2005, произойдет ли исключение MySqlException у первого пользователя, когда второй пользователь выполнит команду SET TRANSACTION и приступит к редактированию данных?
Или подскажите, каким образом обрабатывать подобные ситуации.
Тип таблиц InnoDB.
P.S. Прошу сильно не пинать, я еще только учусь... :-) | |
|
|
|
|
|
|
|
для: prm
(30.01.2008 в 21:07)
| | Если одна из транзакций не может быть завершена и произошло исключение MySqlException вы должны выполнить команду ROLLBACK - которая отменит все предыдущие запросы в транзакции. После этого предложить пользователю повторить попытку (или сделать это автоматически, если действия пользователя не требуются). | |
|
|
|
|
|
|
|
для: cheops
(31.01.2008 в 14:28)
| | Еще раз проясним. Если при выполнении одной транзакции первым пользователем другой пользователь с другого компьютера начнет новую транзакцию, то транзакция первого завершится неудачей и будет сгенерировано исключение МуSqlException? Это так? | |
|
|
|