外键和事务
Foreign key and transaction
我正在尝试在创建 table 组和 table 关系用户组时使用事务。
当我不使用事务时它工作正常,所以属性的命名是正确的。这是代码:
$db = Yii::app()->db;
$transaction = $db->beginTransaction();
try {
$model->attributes=$_POST['MyGroup'];
$model->save();
$model->refresh();
$userMyGroup = new UserMyGroup();
$userMyGroup->IDMyGroup = $model->IDMyGroup;
$userMyGroup->IDUser = Yii::app()->user->id;
$userMyGroup->save();
$transaction->commit();
} catch (CDbException $ex) {
Yii::log("Couldn't create group:".$ex->errorInfo[1], CLogger::LEVEL_ERROR);
$transaction->rollback();
}
错误是:
The INSERT statement conflicted with the FOREIGN KEY constraint "FK_UserMyGroup_MyGroup". The conflict occurred in database "MyDatabase", table "dbo.MyGroup", column 'IDMyGroup'.. The SQL statement executed was: INSERT INTO [dbo].[UserMyGroup] ([IDMyGroup], [IDUser]) VALUES (:yp0, :yp1). Bound with :yp0=4022, :yp1=1
问题可能是在使用外键保存第二个模型(userMyGroup)时,保存的模型可能不在数据库中。如何正确交易?
编辑:
我发现问题是由 audit module 引起的,它正在尝试记录查询,但不能,因为它在事务中并且尚未真正保存在数据库中。我正在尝试弄清楚如何将此事务与模块一起使用...
refresh
方法用最新数据重新填充活动记录。
虽然未提交事务,但最新数据是 table 中的现有数据。
在 $transaction->commit();
之后移动 $model->refresh();
我发现问题是由我正在使用的 audit module 引起的,它正在尝试记录查询,但不能,因为它在事务中并且尚未真正保存在数据库。不幸的是,我没有弄清楚如何将此交易与模块一起使用,所以结果是在交易中使用的 类 上禁用审计模块。
我正在尝试在创建 table 组和 table 关系用户组时使用事务。 当我不使用事务时它工作正常,所以属性的命名是正确的。这是代码:
$db = Yii::app()->db;
$transaction = $db->beginTransaction();
try {
$model->attributes=$_POST['MyGroup'];
$model->save();
$model->refresh();
$userMyGroup = new UserMyGroup();
$userMyGroup->IDMyGroup = $model->IDMyGroup;
$userMyGroup->IDUser = Yii::app()->user->id;
$userMyGroup->save();
$transaction->commit();
} catch (CDbException $ex) {
Yii::log("Couldn't create group:".$ex->errorInfo[1], CLogger::LEVEL_ERROR);
$transaction->rollback();
}
错误是:
The INSERT statement conflicted with the FOREIGN KEY constraint "FK_UserMyGroup_MyGroup". The conflict occurred in database "MyDatabase", table "dbo.MyGroup", column 'IDMyGroup'.. The SQL statement executed was: INSERT INTO [dbo].[UserMyGroup] ([IDMyGroup], [IDUser]) VALUES (:yp0, :yp1). Bound with :yp0=4022, :yp1=1
问题可能是在使用外键保存第二个模型(userMyGroup)时,保存的模型可能不在数据库中。如何正确交易?
编辑:
我发现问题是由 audit module 引起的,它正在尝试记录查询,但不能,因为它在事务中并且尚未真正保存在数据库中。我正在尝试弄清楚如何将此事务与模块一起使用...
refresh
方法用最新数据重新填充活动记录。
虽然未提交事务,但最新数据是 table 中的现有数据。
在 $transaction->commit();
$model->refresh();
我发现问题是由我正在使用的 audit module 引起的,它正在尝试记录查询,但不能,因为它在事务中并且尚未真正保存在数据库。不幸的是,我没有弄清楚如何将此交易与模块一起使用,所以结果是在交易中使用的 类 上禁用审计模块。