存储过程和包装它的php代码上的双重事务
我的代码如下所示 1) 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声明退出处理程序 开始 回降; 辞职的; 结束; 启动交易; //代码(逻辑)。。。 犯罪 结束 以上有什么问题吗?如果我应该放弃一笔交易,我应该做哪一笔 我也不知道双重事务是否
\DB::事务(函数()使用($id,$member\u id){
\DB::select(\DB::raw('calldojob(?,@pJobLogId)'),[$id,$member\u id]);
});
2) 存储过程,如上面的doJob
开始
为SQLEXCEPTION声明退出处理程序
开始
回降;
辞职的;
结束;
启动交易;
//代码(逻辑)。。。
犯罪
结束
以上有什么问题吗?如果我应该放弃一笔交易,我应该做哪一笔
我也不知道双重事务是否会导致这种错误。
我看到了如下所示的错误日志,但这种情况很少发生
SQLSTATE[40001]:序列化失败:在
试图得到锁;尝试重新启动事务
根据MySql官方文件: 第13.3.3节导致隐式提交的语句 事务不能嵌套。这是一个隐含的结果 当您发出启动命令时,对任何当前事务执行提交 事务语句或其同义词之一。
关于第二个问题:我将删除过程中的事务,因为您可以在应用程序代码中嵌套事务。