Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在使用mysql事务时,我们可以进行多次回滚吗_Php_Mysql - Fatal编程技术网

Php 在使用mysql事务时,我们可以进行多次回滚吗

Php 在使用mysql事务时,我们可以进行多次回滚吗,php,mysql,Php,Mysql,在一个事务中可以有多个回滚语句吗?对于您的代码,根据条件,只执行一个回滚。您可以编写多个DB::rollback(),只要只执行一个 要回答这个问题,如果您使用嵌套事务,并且使用回滚/提交返回到上一级别,则可能会有多个回滚。通常,我会尝试避免嵌套事务。我建议抛出异常s并执行回滚()catch中的和commit()在结束时,请尝试-blockso@Cristik,正如您所说的,一次只能调用一个回滚。如果您希望应用程序表现出确定性,则需要确保每个开始调用都与提交或回滚调用平衡。我认为MySQL不会抱

在一个事务中可以有多个回滚语句吗?

对于您的代码,根据条件,只执行一个回滚。您可以编写多个
DB::rollback()
,只要只执行一个


要回答这个问题,如果您使用嵌套事务,并且使用回滚/提交返回到上一级别,则可能会有多个回滚。

通常,我会尝试避免嵌套事务。我建议抛出
异常
s并执行
回滚()
catch
中的
commit()
结束时,请尝试
-blockso@Cristik,正如您所说的,一次只能调用一个回滚。如果您希望应用程序表现出确定性,则需要确保每个
开始
调用都与
提交
回滚
调用平衡。我认为MySQL不会抱怨如果你给它发送多次回滚调用,但是这是你应该避免的。
DB::beginTransaction();
if(some condition)
{
    if(some condition)
    {
    DB::commit();
    }
    else
    {
//first rollback
    DB::rollback();
    }
}else
{
//second rollback
DB::rollback();
}