请问yii2的事务 具体是怎么执行的,为什么我sql出错后不会回滚呢?-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

请问yii2的事务 具体是怎么执行的,为什么我sql出错后不会回滚呢?

a123456678 2016-07-04 14:54:59 1883

我设置了 关联表的 添加和删除操作的事务.afterSave,beforeDelete

正常情况下,关联操作没有问题. A,B 2表 数据都是符合预期的.

我在 数据库中 叫B表 表名修改. 这个时候sql语句肯定是执行不了的. yii直接报错(这也是对的,因为找不到相关的表.)

报错后再查看数据库, A表记录已经删除, 但B表记录任然存在.

我的疑问是, B表的记录存在是对的.因为sql没有执行成功. 但A表的记录为什么也被删除了? 已经启用事务.为什么不回滚呢?

我水平很菜,是不是我对事务的理解错误.

是不是说?事务只是针对 数据库基本操作正常的情况下才会有效.

比如只是逻辑错误的时候,才需要人为(当然这里是框架帮我们搞了)的触发回滚,已达到事务的操作需求?

SQL 数据库
分享到
取消 提交回答
全部回答(1)
  • a123456678
    2019-07-17 19:50:41
    public function transactions()
    {
        return [
            self::SCENARIO_DEFAULT => self::OP_INSERT | self::OP_DELETE
        ];
    }
    0 0
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

推荐文章
相似问题
推荐课程