在没有任何"start transaction"的情况下打电话给"rollback"不好吗?



我正在使用InnoDB引擎使用PHP和MYSQL进行一个web项目。

我在事务中有一些重要的事情要做,如果这些事情中的任何一个失败了,就必须进行回滚。我正在做的是为每一个出错的事情抛出一个异常,并在catch块内进行回滚。问题是,在"启动事务"之前可能会出现异常,因此在这种情况下,"回滚"将在没有任何事务的情况下执行。它没有什么可回滚的,我只是在问自己,免费回滚是否会受到惩罚。MYSQL忽略它而不产生任何后果?

如果是,那么这很好,因为我可以避免制作一些更复杂的逻辑,只在事务启动时发送回滚。

谢谢!

易于检查

# mysql
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 652
Server version: 5.7.29-0ubuntu0.18.04.1-log (Ubuntu)
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
mysql> rollback;
Query OK, 0 rows affected (0.00 sec)
mysql>

不,没有处罚。

最新更新