我的密码如下所示。
( 1) php码
\DB::transaction(function () use ($id, $member_id) {
\DB::select(\DB::raw('call doJob(?,?,@pJobLogId)'), [$id, $member_id]);
});2)存储过程,上面的doJob。
BEGIN
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
ROLLBACK;
RESIGNAL;
END;
START TRANSACTION;
// codes(logic)...
COMMIT;
END以上是否有任何问题?如果我要放弃一笔交易,我应该做哪一件事?
而且,我也不知道双重事务是否会导致这种错误。我看到了如下所示的错误日志,但这几乎没有发生。
SQLSTATE40001:序列化失败:在尝试锁定时发现1213死锁;尝试重新启动事务
发布于 2019-04-17 10:08:56
根据MySql的官方文件:
第13.3.3节导致隐式提交的语句 事务不能嵌套。这是在发出START transaction语句或其同义词时对任何当前事务执行隐式提交的结果。https://dev.mysql.com/doc/refman/5.7/en/implicit-commit.html
https://stackoverflow.com/questions/55724107
复制相似问题