0

私はMySQLデータベースにテーブルを持っているaccountsのでmoney、行が追加された場合accounts.balanceは更新する必要があります。最初にActive RecordとTransactionでそれを行いました

$transaction = $connection->beginTransaction();
try {
    if ($createModel->save()) {
                $account = $createModel->accounts;
                $account->balance += $createModel->amount;
                if ($account->save())
                     $transaction->commit();

    }
} catch(Exception $e){
        $transaction->rollBack();
}

今私はそれを変更し、テーブル$createModel->save()を更新するトリガーを作成し、accounts

CREATE TRIGGER before_insert_money BEFORE INSERT ON money
    FOR EACH ROW
        BEGIN
                UPDATE accounts SET balance=balance+NEW.amount WHERE id=NEW.accounts_id;
        END;

トランザクションを使用せずにアカウント テーブルを更新するのに十分なトリガーはありますか?答えが「いいえ」の場合、トリガー、トランザクション、および ActiveRecord を組み合わせるにはどうすればよいですか?

4

1 に答える 1