【发布时间】:2015-09-25 21:59:52
【问题描述】:
我想知道,如果一个网络请求处理程序需要执行多个更新查询,这些查询需要是一个原子组,就像在 Django 应用程序中这样:
modelA.fieldX = True
modelA.save() # produce a update query on modelA table
modelB.fieldY = modelB.fieldY + 1
modelB.save() # produce a update query on modelB table
并且查询之间没有采取逻辑分支或抛出异常,我还需要将查询包装在事务中吗?
将它们包装在事务中的缺点是什么?它如何影响相关表上其他查询的性能?
编辑: 目前,为了安全起见,我只将交易用于与金钱相关的查询。
【问题讨论】:
-
不使用事务时是否会出错?
-
问自己两个问题:1)如果更新表 A 和 B 之间发生异常(B 不会更新),您的数据是否一致;2)如果另一个客户端执行,您的数据是否一致您的更新 A 和 B 之间的相同记录的类似更新批次?如果不是(1 或 2),那么您需要交易。
标签: sql database web transactions