sql >> Database >  >> RDS >> Sqlserver

Kan een SQL-trigger een webservice aanroepen?

Zelfs als het technisch zou kunnen, is het echt geen goed idee! Een trigger moet erg mager zijn, en het mag zeker geen langdurige operatie zijn (wat een webservice-aanroep zeker is)! Heroverweeg uw architectuur - er zou een betere manier moeten zijn om dit te doen!

Mijn aanbeveling zou zijn om de taak van het "opmerken" dat u de webservice moet aanroepen, in uw trigger, te scheiden van de daadwerkelijke uitvoering van die webserviceaanroep.

Iets als:

  1. voeg in uw triggercode een "do call the webservice later" in een tabel in (alleen de INSERT om het slank en snel te houden - dat is alles)

  2. een asynchrone service hebben (een SQL-taak, of bij voorkeur een Windows NT-service) die deze aanroepen afzonderlijk van de daadwerkelijke triggeruitvoering uitvoert en alle gegevens die van die webservice zijn opgehaald, opslaat in de juiste tabellen in uw database.

Een trigger is een heel kieskeurig iets - het moet altijd heel snel, heel slank zijn - doe een INSERT of maximaal twee - en vermijd in ieder geval cursors in triggers of andere langdurige bewerkingen (zoals een webservice-oproep)

Brent Ozar heeft een geweldige webcast (gepresenteerd op SQL PASS) op De 10 grootste fouten van ontwikkelaars die niet kunnen worden geschaald en triggers zijn het eerste waar hij zijn focus op legt! Sterk aanbevolen



  1. Is er een Booleaans gegevenstype in Microsoft SQL Server zoals in MySQL?

  2. Kan een Postgres-commit bestaan ​​in een procedure met een uitzonderingsblok?

  3. Klob variabele regel voor regel lezen

  4. Docker herkent Postgresql-gegevensmap niet