我是数据库应用程序的新手,我试图使用Datamapper来创建一个ruby Web应用程序。
我偶然发现了一条我不明白的代码:
transaction do |txn|
link = Link.new(:identifier => custom)
link.url = Url.create(:original => original)
link.save
end
我有几个问题:交易究竟是什么?为什么这是首选,而不仅仅是:
link = Link.new(:identifier => custom)
link.url = Url.create(:original => original)
link.save
我应该何时考虑使用交易?什么是最好的用例?有没有可用的在线资源,我可以阅读更多关于这些概念的信息。
谢谢!
答案 0 :(得分:3)
交易是一个不可分割的工作单位。这个想法来自数据库世界,并与数据选择/更新的问题有关。请考虑以下情况:
答案 1 :(得分:1)
事务是一系列指令,在执行时被视为一条原子指令。
这意味着所有指令必须成功才能使事务成功。如果只有其中一个失败,则返回事务开始前的状态。例如,这有利于容错。
交易有用的另一个领域是并发应用程序。使用交易可以避免其他流程的干扰。
希望这有帮助。