Nawet jeśli technicznie może, to naprawdę nie jest dobry pomysł! Wyzwalacz powinien być bardzo oszczędny i zdecydowanie nie powinien obejmować długiej operacji (którą zdecydowanie jest wywołanie usługi internetowej)! Przemyśl swoją architekturę - powinien być na to lepszy sposób!
Moim zaleceniem byłoby oddzielenie zadania „zauważenia”, że musisz wywołać usługę sieciową w wyzwalaczu, od rzeczywistego wykonania tego wywołania usługi sieciowej.
Coś takiego:
-
w kodzie wyzwalacza, wstaw "wywołaj usługę internetową później" do tabeli (tylko
INSERT
aby była szczupła i szybka - to wszystko) -
mieć usługę asynchroniczną (zadanie SQL lub najlepiej usługę Windows NT), która wykonuje te wywołania niezależnie od rzeczywistego wykonania wyzwalacza i przechowuje wszelkie dane pobrane z tej usługi sieciowej w odpowiednich tabelach w Twojej bazie danych.
Wyzwalacz to bardzo wybredna rzecz - zawsze powinien być bardzo szybki, bardzo oszczędny - wykonaj INSERT
lub co najwyżej dwa - i za wszelką cenę unikaj kursorów w wyzwalaczach lub innych długotrwałych operacji (takich jak wywołanie usługi sieciowej)
Brent Ozar ma świetny webcast (prezentowany na SQL PASS) na temat 10 najczęstszych błędów programistów, których nie można skalować a wyzwalacze to pierwsza rzecz, na którą się skupia! Gorąco polecam