簡體   English   中英

外鍵和交易

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM