跪求,事务问题 [ 求助交流 ]
我这样使用事务,任意个无法成功提交都能回滚。
$connection = Yii::app()->db;
$transaction = $connection->beginTransaction();
try{
$connection->createCommand('update sp_operator set suspend=0
where department_id='.$departmentModel->id)->execute();
$connection->createCommand('update sp_department set suspend=0
where id='.$departmentModel->id)->execute();
$transaction->commit();
}
catch (Exception $e){
$transaction->rollBack();
}
但是要求我用AR的事务,不让写sql语句,于是我这样写:
$connection = Yii::app()->db;
$transaction = $connection->beginTransaction();
try{ Operator::model()->updateAll(array('suspend'=>1),"department_id=".$departmentModel->id);
Department::model()->updateAll(array('short_name'=>1),"id=".$departmentModel->id);
$transaction->commit();
}
catch (Exception $e){
$transaction->rollBack();
}
不管哪个出现问题都回滚不了。于是我又改成下面的写法
$departmentModel = new Department();
$transaction=$departmentModel->dbConnection->beginTransaction();
try{ Operator::model()->updateAll(array('suspend'=>1),"department_id=".$departmentModel->id);
Department::model()->updateAll(array('short_name'=>1),"id=".$departmentModel->id);
$transaction->commit();
}
catch (Exception $e){
$transaction->rollBack();
}
结果还是回滚不了,请问当有两个AR实例的时候事务应该怎么写呢? PS:数据库是MySql的InnoDB
共 0 条回复
没有找到数据。
naigo 北京
注册时间:2011-06-10
最后登录:2013-03-13
在线时长:0小时0分
最后登录:2013-03-13
在线时长:0小时0分
- 粉丝0
- 金钱105
- 威望0
- 积分105