Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.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代码上的双重事务_Php_Mysql_Laravel_Transactions - Fatal编程技术网

存储过程和包装它的php代码上的双重事务

存储过程和包装它的php代码上的双重事务,php,mysql,laravel,transactions,Php,Mysql,Laravel,Transactions,我的代码如下所示 1) php代码 \DB::事务(函数()使用($id,$member\u id){ \DB::select(\DB::raw('calldojob(?,@pJobLogId)'),[$id,$member\u id]); }); 2) 存储过程,如上面的doJob 开始 为SQLEXCEPTION声明退出处理程序 开始 回降; 辞职的; 结束; 启动交易; //代码(逻辑)。。。 犯罪 结束 以上有什么问题吗?如果我应该放弃一笔交易,我应该做哪一笔 我也不知道双重事务是否

我的代码如下所示

1) php代码

\DB::事务(函数()使用($id,$member\u id){
\DB::select(\DB::raw('calldojob(?,@pJobLogId)'),[$id,$member\u id]);
});
2) 存储过程,如上面的doJob

开始
为SQLEXCEPTION声明退出处理程序
开始
回降;
辞职的;
结束;
启动交易;
//代码(逻辑)。。。
犯罪
结束
以上有什么问题吗?如果我应该放弃一笔交易,我应该做哪一笔

我也不知道双重事务是否会导致这种错误。 我看到了如下所示的错误日志,但这种情况很少发生

SQLSTATE[40001]:序列化失败:在 试图得到锁;尝试重新启动事务


根据MySql官方文件:

第13.3.3节导致隐式提交的语句

事务不能嵌套。这是一个隐含的结果 当您发出启动命令时,对任何当前事务执行提交 事务语句或其同义词之一。


关于第二个问题:我将删除过程中的事务,因为您可以在应用程序代码中嵌套事务。