我使用Propel作为我的 ORM。
我需要对包含以下字段的表进行批量更新:
ID
Company
Assigned
更新将接收一个数组Company
并将Assigne
d 字段设置为1
。
问题是可能同时发生 2 个批量更新。所以当这种情况发生时,我将不得不接受一个更新,并拒绝另一个。无论如何要锁定表以进行一批更新?还是有更好的解决方案?
这是我找到的解决方案。
而不是锁定它,更好的方法是在进行批量更新时使用以下等效查询
update table
set Assigned=2
where Assigned=1
and Company in {company1, company2}
现在,如果返回的行数与Company
选择的行数不同,则应该回滚整个操作。