-1

レガシー システムへの変更を追跡するために、テーブルにトリガーを追加する必要があるという不幸な状況にあります。TABLE_A に挿入、更新、および削除トリガーがあり、それぞれが 2 つの列の値を TABLE_B に書き込み、削除トリガーによって入力された場合はビット フラグが 1 に設定されます。

TABLE_B のすべてのエントリが 2 回表示されます。挿入は 2 つの行を作成し、更新は 2 つの行を作成し (私たちは信じています)、削除は挿入を作成してから削除を作成します。

レガシー アプリケーションがこれを行っているのか、それとも SQL がそれを行っているのか?

編集(詳細を追加):

トリガーの本体:

.. 削除後

INSERT INTO TableB(col1, isdelete) SELECT col1, 1 from DELETED

..挿入後

INSERT INTO TableB(col1, isdelete) SELECT col1, 0 from INSERTED

..更新後

INSERT INTO TableB(col1, isdelete) SELECT col1, 0 from DELETED

プロファイラーを試しましたが、実行されているステートメントが重複していません。

4

1 に答える 1

0

データに対する操作を確認したときに、アプリケーションがデータを再度変更している可能性があります。

トリガーが他の場所に存在する可能性もあります.余分な行を作成しているTableBにトリガーがある可能性はありますか?

問題をより完全に解決するには、より詳細な情報が必要です。

于 2012-06-15T14:28:58.713 に答える