Anche se tecnicamente potrebbe, non è davvero una buona idea! Un trigger dovrebbe essere molto snello e non dovrebbe assolutamente implicare un'operazione lunga (che è sicuramente una chiamata di servizio web)! Ripensa la tua architettura:dovrebbe esserci un modo migliore per farlo!
La mia raccomandazione sarebbe quella di separare il compito di "notare" che è necessario chiamare il servizio web, nel trigger, dall'esecuzione effettiva di quella chiamata al servizio web.
Qualcosa come:
-
nel tuo codice di attivazione, inserisci un "chiama il servizio web più tardi" in una tabella (solo il
INSERT
per mantenerlo snello e veloce - questo è tutto) -
dispone di un servizio asincrono (un lavoro SQL, o preferibilmente un servizio Windows NT) che effettua le chiamate separatamente dall'effettiva esecuzione del trigger e memorizza tutti i dati recuperati da quel servizio Web nelle tabelle appropriate nel database.
Un trigger è una cosa molto delicata - dovrebbe sempre essere molto veloce, molto snello - fai un INSERT
o due al massimo - ed evita assolutamente i cursori nei trigger o altre operazioni lunghe (come una chiamata a un servizio web)
Brent Ozar ha un ottimo webcast (presentato a SQL PASS) su I 10 errori principali degli sviluppatori che non si adattano e i trigger sono la prima cosa su cui si concentra! Altamente raccomandato