¿Por qué usar desencadenantes de bases de datos cuando puedo hacer la misma tarea en el nivel de código del lado del servidor (por ejemplo, PHP)?

Es bueno poder codificar una aplicación

También es bueno mantener el código de la aplicación separado del diseño y mantenimiento de la base de datos.

Los desencadenantes existen como una bendición mixta para el uso de la base de datos. Existen como globales y existen como sigilosos, ya que es posible que ni siquiera recuerdes que están allí. Por lo tanto, es muy posible que, a menos que realice un seguimiento de su uso de desencadenantes, pueda evocar accidentalmente una secuencia que inicia un desencadenante o un tren de reacciones desencadenadas.

Claro que puede crear una aplicación que contendrá el mismo conjunto de instrucciones que en el servidor. Pero, ¿no es más fácil y rápido si esas instrucciones se procesan del lado del servidor en primer lugar?

Si está haciendo una base de datos correctamente, desea mantener la función de la aplicación en el lado de la aplicación y la integridad de la base de datos y el lado del servidor de reglas.

De esa manera, puede preocuparse por la integridad de la aplicación sin perseguir variables del lado del servidor también.

Hace que el mantenimiento general de la base de datos sea más fácil que la depuración de una aplicación de múltiples capas y acelera las transacciones.

Aquí hay una buena razón: el desencadenador puede usar los privilegios del usuario que definió el desencadenador a medida que ejecuta el cambio en otras tablas, incluso si el usuario que ejecuta insertar / actualizar / eliminar en la tabla base no tiene el privilegio de cambiar esas otras mesas directamente.

Lo uso en una parte crítica de la aplicación que apoyo. Es una buena idea hacer que las aplicaciones se conecten como usuario con los privilegios mínimos necesarios.

Aquí hay una segunda buena razón: es posible que tenga más de una aplicación accediendo a la misma tabla.

Por supuesto, puede ejecutar las mismas tareas en el nivel de la aplicación que podría hacer en los desencadenantes, pero los desencadenantes tienen la ventaja de que suceden de la misma manera después de que cualquier cliente realiza una inserción / actualización / eliminación en la tabla que tiene el desencadenante.

Por ejemplo, podría tener múltiples aplicaciones, y también algunos scripts SQL, y también alguien que ejecuta consultas ad hoc en phpMyAdmin, todos los cuales están haciendo inserción / actualización / eliminación en esa tabla. ¿Qué tan seguro está de que todas estas interfaces de cliente harán el trabajo para activarse de la misma manera?

La ejecución de cambios desde un disparador lo garantiza.