我在MySQL数据库accounts
和money
表,因此,如果添加任何行到钱,accounts.balance
应该更新,首先我做到了通过活动记录和交易如何在Yii中使用触发器时使用交易
$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;
是引发足够,以确保有关使用事务更新帐户的表呢?如果你的answe r是否,我怎样才能结合触发器,事务和ActiveRecord?
你为什么要通过触发器*交易有什么问题? – DCoder
我认为它速度更快,它可以帮助我拥有更薄的控制器。 –
*思考*某事更快与*测量*并不相同,实际上速度更快。即使速度稍微快一点,你仍然使用煎饼杀死黄蜂,你的解决方案可能会起作用,但这不是触发器的作用。 – DCoder