0

我们想为我们的 Symfony2 webapp 实现多版本并发控制

这意味着在任何事件上,都不UPDATE会对数据库执行 no,而只会执行INSERTs。由于我没有找到 Symfony2 对这个要求的任何原生支持,我决定如何手动实现它。

除了每个实体(例如 a )的常规 ID(主键)之外User,我们还添加了另一个实体属性,例如 another userID。因此,在每次更改用户属性时,我们可以简单地INSERT为用户添加另一行,然后再有另一个ID,但相同userID

然后可以始终通过特定的附加实体 ID 来识别实体。

但是这个解决方案有几个问题: 常规实体 ID 是主键,因此是与该实体的所有关系的标识符。也可以尝试创建组合主键(例如IDplustimestampIDplus entityID,但 Symfony2/Doctrine2 不支持组合主键

那么你将如何在 Symfony2/Doctrine2 中实现 MVCC?你有办法解决这个问题吗?或者您会建议使用单独的历史记录表来跟踪所有更改吗?

4

0 回答 0