トリガーの存在するテーブルの更新でEntityDuplicatedExceptionが発生するとき
データベースがSQLServerで、Behaviorでの更新で1件しか更新されていないはずなのに、
EntityDuplicatedExceptionが発生し、更新件数も2件になっているのでおかしいと思っていると、
どうもトリガーの更新件数も加算されているようでした。
過去にMLにも投稿されていました。
T-SQLではafter トリガで set nocount on をせずに(デフォルト)のまま行を更新していると
http://ml.seasar.org/archives/seasar-dotnet/2009-June/001364.html
@@ROWCOUNTはトリガでの更新数に上書きされてしまう気がします。
トリガー内で、
set nocount on; 実際の処理 set nocount off;
とすれば、トリガーでの更新件数は反映されず、EntityDuplicatedExceptionも発生しなくなりました。
※過去のまとめ