【发布时间】:2017-12-06 15:32:28
【问题描述】:
所以我在玩交易,我试图从一个转移到另一个中减去资金。从图片中可以看出,第一次更新查询不成功……不像第二次,它执行成功。现在,我所期待的是,当我提交时,我不会看到任何更改。但事实并非如此。另外,我使用了START TRANSACTION(它隐式地将autocommit 设置为0),而不是BEGIN 命令。
这是这个的输出:
我在这里缺少什么?
【问题讨论】:
-
第一次查询非常成功,只是没有更新记录。
-
@HoneyBadger 哦,我明白了。那么,如果这被认为是成功的,如果特定账户上没有足够的资金,如何回滚交易呢?
-
我没听懂,你的例子中的两个更新似乎彼此无关,那么如果第一个不更新任何记录,你为什么要回滚呢?
-
@HoneyBadger 它们并非无关。我只是在 MySQL 中玩事务,所以一切似乎都有些混乱。不过,它们是相关的。我正在将资金从一个账户转移到另一个账户。所以,我从 Fred 的账户中取出 50 美元,然后将它们寄给 Bob 的账户。当然,如果 Fred 的账户上没有足够的资金,我想回滚一切......
-
我认为 Gordon 给了你一个很好的指导。通常,如果出现资金不足的情况,您会希望它带有红色的大感叹号。这就是为什么我会在应用程序中这样做,而不是让数据库安静地处理它。
标签: mysql sql transactions commit acid