【发布时间】:2015-10-13 06:19:25
【问题描述】:
我在 symfony2 中使用了学说 2。我有关于数据并发的问题。这是我的情况。
我创建了一个电子商务网站。假设我有数量 = 5 的产品 A。客户 X 购买了 4 件产品 A,客户 Y 同时购买了 2 件产品 A。 对于客户 X 案例,doctrine 会查询产品 A,初始数量为 5。然后,doctrine 更新数量并将其设置为 1 (5 - 4)。 对于客户 Y 的情况,产品 A 的初始数量仍然是 5,因为客户 Y 和客户 X 同时购买了该产品,因此他们得到相同的初始数量。然后学说将数量更新为 3 (5 - 2)。
如果教义 2 提供了某种方法来生成查询,如 SET column_name = column_name + difference_value 而不是 SET column_name = value,这将是一个不错的解决方案。但据我所知,doctrine2 总是使用 SET column_name = value 生成查询。
是否有任何解决方案或解决方法,而不是锁定表?通过锁定表,这意味着客户 Y 必须等到客户 X 完成交易。假设有 100 个客户同时购买该产品,性能会很差。
谢谢。
【问题讨论】:
标签: symfony concurrency doctrine-orm