Php 打电话“是不是不好?”;“回滚”;没有任何「;启动事务";?

Php 打电话“是不是不好?”;“回滚”;没有任何「;启动事务";?,php,mysql,innodb,Php,Mysql,Innodb,我正在使用InnoDB引擎进行一个使用PHP和MYSQL的web项目 我在一个事务中有一些重要的事情要做,如果其中任何一件事情失败了,就必须进行回滚。我要做的是为每一个出错的事情抛出一个异常,并在catch块中回滚。问题是在“启动事务”之前可能存在异常,因此在这种情况下,“回滚”将在没有任何事务的情况下执行。它没有什么可回滚的,我只是在问自己,如果不做任何回滚,是否会有任何惩罚。MYSQL会忽略它而不产生任何后果吗 如果是,那就好了,因为我可以避免使用更复杂的逻辑,只在事务启动时发送回滚 谢谢

我正在使用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>
不,没有处罚。

很容易检查

# 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>

不,没有惩罚。

为什么不一起避免这种情况,只将原子操作包装在
中试试
?仅供参考,你可以嵌套
try..catch
block你是对的,我没有想到这一点。这很容易做到,而且不需要任何复杂的逻辑来创建额外的处理。为什么不一起避免这一点,只在
try
中包装您的原子操作呢?仅供参考,你可以嵌套
try..catch
block你是对的,我没有想到这一点。这很容易做到,而且没有任何会产生额外处理的复杂逻辑。