技術的にはできたとしても、それは本当に良い考えではありません。トリガーは非常に無駄のないものにする必要があり、時間のかかる操作 (Web サービスの呼び出しは間違いなくそうです) を伴うべきではありません。アーキテクチャを再考してください - これを行うためのより良い方法があるはずです!
トリガーで Web サービスを呼び出す必要があることを「認識する」タスクを、その Web サービス呼び出しの実際の実行から分離することをお勧めします。
次のようなもの:
<オール> <リ>
トリガー コードで、「後で Web サービスを呼び出す」をテーブルに挿入します (INSERT
のみ)。 スリムで高速に保つ - それだけです)
実際のトリガーの実行とは別にこれらの呼び出しを行い、その Web サービスから取得したデータをデータベースの適切なテーブルに格納する非同期サービス (SQL ジョブ、またはできれば Windows NT サービス) を用意します。
トリガーは非常に気難しいものです - 常に非常に速く、非常に無駄のないものでなければなりません - INSERT
を実行してください または多くても 2 つ - トリガー内のカーソルやその他の時間のかかる操作 (Web サービス呼び出しなど) は絶対に避けてください。
Brent Ozar は、スケールしない開発者の過ちトップ 10 トリガーは、彼が最初に焦点を当てるものです!強くお勧めします