Yii2 事务

作者: guanguans | 来源:发表于2018-01-22 17:10 被阅读83次

    事务(Transaction)

    在Yii中,使用 yii\db\Transaction 来表示数据库事务。

    一般情况下,我们从数据库连接启用事务,通常采用如下的形式:

    $transaction = $connection->beginTransaction();
    try {
        $connection->createCommand($sql1)->execute();
        $connection->createCommand($sql2)->execute();
        // ... executing other SQL statements ...
        $transaction->commit();
    } catch (Exception $e) {
        $transaction->rollBack();
    }
    

    在上面的代码中,先是获取一个 yii\db\Transaction 对象,之后执行若干SQL 语句,然后调用之前 Transaction 对象的 commit() 方法。这一过程中, 如果捕获了异常,那么调用 rollBack() 进行回滚。

    嵌套事务

    在开头的例子中,展现的是事务最简单的使用形式。Yii还允许把事务嵌套起来使用。 比如,可以采用如下形式来使用事务:

    $outerTransaction = $db->beginTransaction();
    try {
        $db->createCommand($sql1)->execute();
    
        $innerTransaction = $db->beginTransaction();
        try {
            $db->createCommand($sql2)->execute();
            $db->createCommand($sql3)->execute();
            $innerTransaction->commit();
        } catch (Exception $e) {
            $innerTransaction->rollBack();
        }
    
        $db->createCommand($sql4)->execute();
        $outerTransaction->commit();
    } catch (Exception $e) {
        $outerTransaction->rollBack();
    

    相关文章

      网友评论

        本文标题:Yii2 事务

        本文链接:https://www.haomeiwen.com/subject/opfraxtx.html