为了账号安全,请及时绑定邮箱和手机立即绑定

MySQL的事物怎么失效了?没有被回滚。

MySQL的事物怎么失效了?没有被回滚。

幕布斯7119047 2019-05-25 13:08:57
用的yii1框架,我用wireshark抓了MySQL的查询包。首先是发送了:STARTTRANSACTION查询,然后后面有insert查询,最后也发送了ROLLBACK查询。但是我一看数据库,那个insert查询的数据在数据库里面有,这可能是怎么回事呀?我发现里面调用了一个存储过程,存储过程里面有开始一个新的事物,然后提交。不会是这里影响的吧?存储过程是在insert语句前面调用的。
查看完整描述

2 回答

?
开心每一天1111

TA贡献1836条经验 获得超13个赞

mysql不支持事务嵌套,如果存储过程里使用了事务,那在这一层就提交了事务,如果你的会话没有设置autocommit=0,那你的后面的insert单独就是一个事务,执行完就提交了,后面的rollback根本没用
                            
查看完整回答
反对 回复 2019-05-25
?
饮歌长啸

TA贡献1951条经验 获得超3个赞

搞清楚了,MySQL不支持嵌套事务,我这里一开始开始了一个事务,后面调用存储过程,里面也开启事务,这里会导致我上一个事务自动提交,然后insert,其实到了这里已经没有事务了,就是单条语句,所以会立即生效。后面的rollback也是无效的。
                            
查看完整回答
反对 回复 2019-05-25
  • 2 回答
  • 0 关注
  • 467 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信