数据并发,因为doctrine使用SET column_name = value而不是像SET column_name = column_name + difference_value那样递增它

时间:2015-10-13 06:19:26

标签: symfony concurrency doctrine-orm

我正在使用doctrine2和symfony2。我有关于数据并发的问题。这是我的情况。

我为电子商务创建了一个网站。假设我有产品A,数量= 5.客户X购买4项产品A和客户Y同时购买2项产品A. 对于客户X案例,doctrine将查询产品A,初始数量为5.然后,doctrine更新数量并将其设置为1(5 - 4)。 对于客户Y的情况,产品A的初始数量仍为5,因为客户Y和客户X同时购买该产品,因此他们获得相同的初始数量。然后,学说将数量更新为3(5 - 2)。

如果doctrine2提供了一些通过递增生成查询的方法,如SET column_name = column_name + difference_value而不是SET column_name = value,那将是一个很好的解决方案。但是根据我的结果,doctrine2总是使用SET column_name = value生成查询。

是否有任何解决方案或解决方法而不是锁定表格?通过锁定表格,这意味着客户Y必须等到客户X完成交易。可以说,有100个客户同时购买该产品,性能会非常差。

感谢。

1 个答案:

答案 0 :(得分:0)