[英]Foreign key and transaction
我正在嘗試在創建表組和具有關系用戶組的表時使用事務。 當我不使用事務時,它可以正常工作,因此屬性的命名是正確的。 這是代碼:
$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)時,保存的模型可能不在數據庫中。 如何正確進行交易?
編輯:
我發現問題是由審計模塊引起的,它正在嘗試記錄查詢,但是不能像在事務中那樣,並且還沒有真正保存在數據庫中。 我試圖弄清楚如何與模塊一起使用此事務...
refresh
方法使用最新數據重新填充活動記錄。
當不提交事務時,最新數據是表中的現有數據。
移動$model->refresh();
在$transaction->commit();
我發現問題是由我正在使用的審核模塊引起的,它試圖記錄查詢,但是不能,因為它在事務中並且尚未真正保存在數據庫中。 不幸的是,我沒有弄清楚如何與模塊一起使用該事務,因此結果是在事務中使用的類上禁用了審計模塊。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.