gpt4 book ai didi

php - 什么时候应该使用 MySQL 事务?

转载 作者:行者123 更新时间:2023-12-01 00:48:35 24 4
gpt4 key购买 nike

我阅读了一些关于何时应该使用事务的文章。我阅读:

When should I use transactions? Basically any time you have a unit of work that is either sensitive to outside changes or needs the ability to rollback every change, if an error occurs or some other reason.

但是有人可以向我解释得更好吗?

  • 当我执行两个或多个时,我应该开始一个交易吗?删除/更新/插入查询?
  • 当我只有一个删除/更新/插入查询时,是否也应该开始一项事务?
  • 我应该在一个页面上启动事务 10 次,还是整个页面只启动一次更好,或者您建议每个页面的最大值(例如 5 次)?

感谢您的帮助!

最佳答案

当您有一组相互依赖的查询时,将使用事务。

例如银行:

  • 银行客户“John”向“Alice”的账户转账 100 美元。
  • 对于此示例,有 2 个查询(我没有显示日志记录或交易历史记录等)。您需要从约翰的余额中扣除 100 美元,然后将其添加到爱丽丝的余额中。
  • 开始交易
  • 从约翰那里扣除
    • UPDATE accounts SET balance=balance-100 WHERE account='John'
  • 添加到爱丽丝
    • UPDATE accounts SET balance=balance+100 WHERE account='Alice'
  • 提交

在您提交之前,交易不会被保存。因此,如果任一查询中出现错误,您可以调用 rollback 并撤消自事务开始以来运行的任何查询。如果出于某种原因向 Alice 添加 100 美元的查询失败,您可以回滚并且不从 John 扣除 100 美元。这是一种确保您可以在需要时自动撤消查询的方法。


  • 当我执行两个或多个删除/更新/插入查询时,是否应该启动一个事务?

    取决于查询在做什么。

  • 当我只有一个删除/更新/插入查询时,是否也应该开始一项事务?

    没有必要,除非您需要一种回滚(撤消)查询的方式,就像您想在调用提交(保存)之前进行更新并验证它一样。

  • 我应该在一个页面上开始 10 次交易,还是整个页面只开始一次更好,或者您建议每个页面的最大值(例如 5 次)?

    需要多少就开始多少。我怀疑您每页有多个交易,因为您很可能在每个页面加载时做一件事(即转账)。

关于php - 什么时候应该使用 MySQL 事务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18496465/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com