首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >存储过程和php代码的双重事务

存储过程和php代码的双重事务
EN

Stack Overflow用户
提问于 2019-04-17 09:19:08
回答 1查看 74关注 0票数 0

我的密码如下所示。

( 1) php码

代码语言:javascript
复制
\DB::transaction(function () use ($id, $member_id) {

                \DB::select(\DB::raw('call doJob(?,?,@pJobLogId)'), [$id, $member_id]);

});

2)存储过程,上面的doJob。

代码语言:javascript
复制
BEGIN

    DECLARE EXIT HANDLER FOR SQLEXCEPTION
    BEGIN
        ROLLBACK;
        RESIGNAL;
    END;

    START TRANSACTION;

    // codes(logic)...

    COMMIT;

END

以上是否有任何问题?如果我要放弃一笔交易,我应该做哪一件事?

而且,我也不知道双重事务是否会导致这种错误。我看到了如下所示的错误日志,但这几乎没有发生。

SQLSTATE40001:序列化失败:在尝试锁定时发现1213死锁;尝试重新启动事务

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-17 10:08:56

根据MySql的官方文件:

第13.3.3节导致隐式提交的语句 事务不能嵌套。这是在发出START transaction语句或其同义词时对任何当前事务执行隐式提交的结果。https://dev.mysql.com/doc/refman/5.7/en/implicit-commit.html

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55724107

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档