Проблема с пакетным обновлением Propel Row Lock - PullRequest
0 голосов
/ 03 августа 2009

Я использую Propel в качестве ORM.

Мне нужно выполнить пакетное обновление таблицы со следующими полями:

ID
Company
Assigned

Обновление будет принимать массив Company и устанавливать для поля Assigne d значение 1.

Проблема в том, что одновременно может происходить 2 пакетных обновления. Поэтому, когда это произойдет, мне придется принять одно обновление и отклонить другое. Есть ли способ заблокировать таблицу для одного пакетного обновления? Или есть лучшее решение?

1 Ответ

1 голос
/ 11 августа 2009

Вот решение, которое я нашел.

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

update table 
set Assigned=2
where Assigned=1
and Company in {company1, company2}

Теперь, если количество возвращаемых строк не совпадает с количеством выбранных Company, тогда вся операция должна быть откатлена .

...