[seasar-dotnet:1367] Re: DBFlute とトリガーの相性について

Nakai [E-MAIL ADDRESS DELETED]
2009年 6月 5日 (金) 15:19:13 JST


中井です。

set nocount onはしていませんでした。
set nocount onで実行したところ正常に処理が終了しました。

菊池さん、ありがとうございました。


菊池和彦 <[E-MAIL ADDRESS DELETED]> wrote:

> 菊池です
> 
>  トリガは before / after / insted of のどれでしょう。
> 
>  T-SQLではafter トリガで set nocount on をせずに(デフォルト)のまま行を更新していると
> @@ROWCOUNTはトリガでの更新数に上書きされてしまう気がします。
> (他のトリガ種別については試してないのでわかりません)
> 
>  まずはトリガにて set nocount on をしているかを確認してみてください。
> 
> 
> 2009/06/05 14:18 に Nakai<[E-MAIL ADDRESS DELETED]> さんは書きました:
> > お世話になっております。中井と申します。
> >
> > トリガーが存在するテーブルにBhvのUpdate、Deleteを実行すると
> > Exceptionが発生してしまいました。
> >
> > <環境>
> > Dbflute.Net 0.8.8.9
> > SQLServer2005
> >
> >
> > <トリガーの内容>
> > テーブルの更新履歴を保存する為、
> > 「T_A」テーブルに対してInsert、Update、Deleteされたレコードを
> > 「T_A_HISTORY」テーブルにInsertします。
> >
> > 「T_A_HISTORY」テーブルのカラムは「T_A」テーブルのカラム+「履歴タイプ(I,U,D)」+「挿入時刻」です。
> >
> >
> > <Exceptionの内容>
> > ・Update時
> >        EntityDuplicatedException
> > {"The entity was Too Many! it has been duplicated. It should be the only one! But the updatedCount=2: entity={省略}"}
> >
> > ・Delete時
> >  EntityAlreadyUpdatedException
> > [EDAO0005]
> >
> >
> > 更新の時、メッセージに「updatedCount=2」とあるのは、HISTORYテーブルにトリガーが挿入したレコードもカウントしているのでしょうか?
> >
> > 今のところ回避方法として、
> > ・トリガーを削除
> > ・ExBhvにInsertWithHistory、UpdateWithHistory、DeleteWithHistoryメソッドを
> > 作成し、この中で「T_A_HISTORY」への登録を自前で行う
> >
> > を考えているのですが、他によい方法があれば御教授頂けないでしょうか。
> >
> > よろしくお願い致します。
> > _______________________________________________
> > seasar-dotnet mailing list
> > [E-MAIL ADDRESS DELETED]
> > https://ml.seasar.org/mailman/listinfo/seasar-dotnet
> >
> 
> 
> 
> -- 
>  Kazuhiko Kikuchi <[E-MAIL ADDRESS DELETED]>
>   Microsoft Valueable Professional - Visual C# 2004-2008
> _______________________________________________
> seasar-dotnet mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-dotnet



seasar-dotnet メーリングリストの案内