私は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 を組み合わせるにはどうすればよいですか?