我正在计划一个允许并发访问某些表的Web应用程序 - 使用Rails。有没有人有实施交易的建议?它甚至是必要的吗?
该应用程序将在CentOS LAM配置下运行。
答案 0 :(得分:1)
我不知道交易和并发与彼此有很多关系。
正如我所看到的,使用事务的主要原因是确保如果对数据库执行多个操作,则它们全部工作或全部失败。有关详细信息,请参阅this blog post of mine。
换句话说,我会说不,你不必担心交易是解决你的并发情况的一种方法。 (不过我可能错了。)
答案 1 :(得分:0)
交易和并发无关。如果在DB中应用多个操作(通常但不一定是几个表),如果其中任何一个操作失败都会引发某种类型的不一致状态 - 与已存在的数据相关,或者是失败的动作应该为其后面的动作建立必要条件(例如:如果未能插入将成为下一个动作将插入的其他人的父记录的新记录)。因此,在这些情况下,您需要保证仅在相关操作全部成功或者不成功时应用相关操作,然后回滚所有先前执行的相关操作以返回到第一个此类操作之前存在的初始状态被处决了