Buona risposta di Rolando.
Inoltre - I trigger non dovrebbero essere usati per la logica, perché un paio di trigger tra loro correlati in seguito, le cose diventeranno rapidamente confuse. Un bel set di istruzioni in una procedura memorizzata o in una procedura lato client può comprendere più chiaramente la logica aziendale rispetto a una serie di logiche nascoste nel database. Esistono anche limitazioni sui trigger rispetto alla tabella da cui vengono attivati, quindi potresti trovarti a dividere la logica in due luoghi diversi.
Inoltre, potresti trovare modi per ottimizzare in quale punto questi calcoli avvengono nel tuo server di logica aziendale, mentre un trigger si attiverà ogni volta. Ti ritroverai a disattivare il trigger, aggiornare la tabella e quindi riattivare il trigger, il che significa anche che devi inserire la logica del trigger in quel codice.
Inoltre, non è necessario disporre di tutta la logica nella parte della logica aziendale del codice, è possibile che si desideri applicare l'integrità della tabella utilizzando le procedure memorizzate. Questo può avviare una transazione, eseguire più aggiornamenti e fare in modo che le cose tornino indietro in caso di errore. In questo modo qualcuno che guarda il database può vedere la logica per l'inserimento di un ordine, per esempio. Ciò è meno importante nel mondo di oggi poiché i servizi Web possono essere l'interfaccia di accesso singolo al database; ma nel caso in cui più eseguibili abbiano accesso al DB questo può essere enorme.
Inoltre - avrai comunque delle transazioni - non eseguirai i tuoi trigger senza uno ... giusto? Quindi è bene sapere come avviare una transazione; fare delle cose; e quindi terminare una transazione. Se vedi questo modello nel tuo codice, un altro pezzo di codice che lo utilizza sarà leggero sul carico cognitivo. Un trigger, se ricordi che è lì, ti costringerà a pensare diversamente per quelle transazioni che sono interessate dal trigger, specialmente se vengono estratte altre tabelle che potrebbero anche avere trigger.
Fondamentalmente, tra un lavoro cron regolarmente pianificato (o un lavoro dell'agente di database) e buone procedure memorizzate, è possibile ottenere il 99% di ciò che si desidera. L'1%; ripensare il progetto.