【问题标题】:Transaction over many functions多功能交易
【发布时间】:2013-06-02 21:49:40
【问题描述】:

我有一些功能可以编辑或读取我的数据库。我做的第一件事就开始一个事务,然后我做的最后一件事是提交或回滚它,而不是基于每个功能,这是一个好主意吗?

如果在同一事务中,但在提交之前,是否会读取新值或旧值?

我希望在每个页面加载中的所有函数调用上都有一个事务行为。

编辑:

我只使用简单的单行 sql 语句。所有逻辑都在php中完成。

【问题讨论】:

    标签: php mysql sql transactions


    【解决方案1】:

    如果在同一事务中,则读取新值。这个想法是您可以在提交之前查看更新的结果,它不像事务在您提交之前隐藏更改,它只是允许您在出现问题时撤消更改。

    关于是否在每个功能的基础上执行这些操作,这实际上取决于每个人在做什么,以及它们是否影响相同的数据。如果您不需要检查并决定是否提交/回滚直到所有这些都完成,那么只保留一个事务可能没问题。

    【讨论】:

    • 有些函数编辑相同的数据,是的。如果出现问题,我想尽快回滚。如果我使用 PDO,是否有任何特殊方法可以“全局”执行此操作?
    • 我不确定您所说的全局是什么意思,但要尽早回滚,您可能希望使用一些 IF/THEN 逻辑在每个函数或函数组之后检查是否或不是你想继续下一个或回滚,然后在所有完成后提交。
    【解决方案2】:

    使用事务背后的想法是针对所有语句都需要成功或都不应该成功的情况。

    如果不使用事务,mysql会将每条语句都当作一个事务处理,并在每条语句之后自动提交(除非你禁用自动提交,否则什么都不会发生)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-18
      • 1970-01-01
      • 2018-11-24
      • 1970-01-01
      • 1970-01-01
      • 2022-01-24
      • 1970-01-01
      • 2021-12-20
      相关资源
      最近更新 更多