• Yii2中事务的使用


    官方是这样的

    // $connection其实是数据库连接
    $transaction = $connection->beginTransaction(); try { $connection->createCommand($sql1)->execute(); $connection->createCommand($sql2)->execute(); // ... executing other SQL statements ... $transaction->commit(); } catch (Exception $e) { $transaction->rollBack(); }

    其实可以这样使用

    $transaction = Yii::$app->db->beginTransaction();
    try {
        // ... executing other SQL statements ...
        $transaction->commit();
    } catch (Exception $e) {
        $transaction->rollBack();
    }

    原因)创建数据库连接(Creating DB Connections)

    想要访问数据库,你首先需要通过创建一个 yiidbConnection 实例来与之建立连接。

    $db = new yiidbConnection([
        'dsn' => 'mysql:host=localhost;dbname=example',
        'username' => 'root',
        'password' => '',
        'charset' => 'utf8',
    ]);

    因为数据库连接经常需要在多个地方使用到, 一个常见的做法是以应用组件的方式来配置它,如下:

    return [
        // ...
        'components' => [
            // ...
            'db' => [
                'class' => 'yiidbConnection',
                'dsn' => 'mysql:host=localhost;dbname=example',
                'username' => 'root',
                'password' => '',
                'charset' => 'utf8',
            ],
        ],
        // ...
    ];

    之后你就可以通过语句 Yii::$app->db 来使用数据库连接了。

    对于隔离级别,yiidbTransaction 也提前定义了几个常量:

    const READ_UNCOMMITTED = 'READ UNCOMMITTED';    // 读未提交
    const READ_COMMITTED = 'READ COMMITTED';      //  读提交
    const REPEATABLE_READ = 'REPEATABLE READ';     //  可重复读
    const SERIALIZABLE = 'SERIALIZABLE';        // 串行化

    可以直接使用

    // 开启事务 隔离级别 串行化
    $transaction = Yii::$app->db->beginTransaction( yiidbTransaction::SERIALIZABLE);

    MySQL 事务隔离级别
    忘了的可以看看这个

    MySQL事务是不支持嵌套的,但是Yii2框架使用了缓存,可以使用事务嵌套,同学们可以打开下面链接看看
    深入理解Yii2.0之事务(Transaction)
  • 相关阅读:
    【Mysql学习笔记】浅析mysql的binlog
    HBase 学习笔记---守护进程及内存调优
    字符集例子-同一字符不同字符集编码不同及导入导出的乱码
    随机访问
    格式化的代价
    读写文本文件
    缓冲
    加速I/O的基本规则
    序列化再探讨
    数据库I/O:CMP、Hibernate
  • 原文地址:https://www.cnblogs.com/niuben/p/11088532.html
Copyright © 2020-2023  润新知