Aunque esta pregunta seguramente es básica para mucha gente nos ha parecido interesante resaltarla aquí puesto que otros muchos programadores no la tendrán tan clara. Nuestro tutor Alberto Población dio cumplida respuesta hace poco en uno de los foros de Microsoft a un programador que tenía una gran duda al respecto.
La cuestión es en esencia ¿Qué es mejor implementar un disparador (trigger) en SQL Server para realizar unas actualizaciones ante ciertas acciones o enviar la instrucción también desde el cliente? ¿Cómo le afectan a ambas opciones las transacciones que pueda haber activas?.
El coste de ejecutar los triggers no es mayor que el coste de realizar la misma operación que realizan los triggers desde el código cliente. De hecho, si el número de usuarios crece, es mejor hacer esas operaciones desde el servidor (en un trigger) que hacer las mismas operaciones desde el cliente, ya que esto último supone tráfico adicional desde el cliente al servidor, y por lo tanto una operación más lenta, que en consecuencia mantiene la transacción abierta durante más tiempo y los bloqueos durán más, perjudicando a la concurrencia en ambientes multiusuario.
Así que si las operaciones de actualización son necesarias y en todo caso deben realizarse, es preferible dejar los triggers a intentar realizar esas operaciones dentro de una transacción desde el código cliente.
Además, el trigger se ejecuta dentro de la misma transacción que la operación que lo disparó. Por ejemplo, si inicias una transacción e insertas un registro en una tabla, esta inserción dispara un trigger, y el trigger hace una inserción en una segunda tabla, entonces en caso de hacer un rollback se deshacen las dos inserciones.