トリガーの存在するテーブルの更新でEntityDuplicatedExceptionが発生するとき

データベースがSQLServerで、Behaviorでの更新で1件しか更新されていないはずなのに、
EntityDuplicatedExceptionが発生し、更新件数も2件になっているのでおかしいと思っていると、
どうもトリガーの更新件数も加算されているようでした。
過去にMLにも投稿されていました。

T-SQLではafter トリガで set nocount on をせずに(デフォルト)のまま行を更新していると
@@ROWCOUNTはトリガでの更新数に上書きされてしまう気がします。

http://ml.seasar.org/archives/seasar-dotnet/2009-June/001364.html


トリガー内で、

set nocount on;

実際の処理

set nocount off;

とすれば、トリガーでの更新件数は反映されず、EntityDuplicatedExceptionも発生しなくなりました。


※過去のまとめ