Acerca de los activadores de MySQL

       Recientemente, vi algunos SQL antiguos en funcionamiento, que contenían activadores (disparadores) que rara vez se tocaban antes. Así que vine a csdn para aprender de él, leer las presentaciones de muchos grandes y resumí un blog por mí mismo, para poder revisar y resumir en el futuro.

       1. ¿Qué es un disparador?

        Trigger (Disparador) es una función muy práctica en MySQL, de hecho, otros SGBD también tienen funciones de disparo. La base de datos se puede activar antes (o después) de que el operador "agregue, elimine o modifique" la tabla y ejecute automáticamente un código SQL preescrito.

        2. Introducción al gatillo

           2.1 Palabras clave

 ANTES DE INSERTAR_ Implemente la función de disparo antes de insertar datos. Puede detectar si los datos insertados se ajustan a la lógica comercial, como devolver un mensaje de error si no se ajusta.

AFTER INSERT_ implementa la función de activación después de insertar datos. Se puede utilizar para realizar operaciones en otra tabla asociada después de aumentar los datos de la tabla, etc.

ANTES DE LA ACTUALIZACIÓN_ De manera similar, antes de actualizar los datos, verifique si los datos actualizados se ajustan a la lógica comercial y devuelve un mensaje de error si no es así.

AFTER_UPDATE_ Después de actualizar los datos, como el comportamiento de la operación, se puede registrar en la tabla de registro.

ANTES DE ELIMINAR_ Realice algunas operaciones antes de eliminar datos, puede verificar si hay datos asociados y, de ser así, detener la operación de eliminación.

DESPUÉS DE ELIMINAR_ Después de eliminar una parte de la información en una tabla, elimina automáticamente la información asociada con otra tabla.

        2.2 Gramática básica

DELIMITER //
CREATE TRIGGER [TRIGGER NAME]
[BEFORE OR AFTER] [INSERT OR DELETE OR UPDATE]
ON [TABLE NAME]
FOR EACH ROW [...SQL...]//
DELIMITER ;

La explicación general es que, en primer lugar, necesitamos cambiar el separador y reemplazar el punto y coma predeterminado de MySQL con otros símbolos. ¿Por qué necesitamos cambiarlo? Porque una vez que continuamos usando el punto y coma como separador, MySQL ejecutará automáticamente la instrucción SQL cuando vea el punto y coma, y ​​el contenido de nuestro activador necesita condiciones específicas para ejecutarse, por lo que usamos // para separarlo. Finalmente, restauramos el punto y coma original.

3. ¿Por qué no se recomienda usar disparadores de MySQL? 

Existe una gran conexión entre los procedimientos almacenados y los disparadores. Mi entendimiento general es que un disparador es un procedimiento almacenado oculto, porque no requiere parámetros, no necesita mostrarse y, a menudo, se realiza sin su conocimiento. Muchas operaciones se han hecho Desde este punto de vista, al estar oculta, aumenta virtualmente la complejidad del sistema, y ​​el personal que no sea DBA tendrá dificultad para entender la base de datos, porque no siente su existencia sin ejecución.
Además, cuando se trata de una lógica compleja, el anidamiento de disparadores es inevitable. Si están involucrados varios procedimientos almacenados, además de transacciones, etc., es probable que se produzcan interbloqueos, y a menudo ocurrirán durante la depuración. Cambiar sexualmente de un disparador a otro, y el seguimiento continuo de las relaciones en cascada, es fácil abrumar a las personas. De hecho, desde el punto de vista del rendimiento, el activador no mejora mucho el rendimiento, pero desde el punto de vista del código, puede ser fácil realizar el negocio al codificar, por lo que mi punto de vista es: ¡abandone el activador! Básicamente, las funciones de los disparadores se pueden realizar mediante procedimientos almacenados.
Es fácil leer el código al mostrar la llamada del procedimiento almacenado en el código, y la llamada implícita del disparador es fácil de ignorar.
Los procedimientos almacenados también tienen sus fallas fatales;
la falla fatal de los procedimientos almacenados radica en la portabilidad. Los procedimientos almacenados no se pueden trasplantar entre bases de datos. Por ejemplo, los procedimientos almacenados en la base de datos mysql se consideran de antemano. Si el rendimiento se trasplantará a Oracle, todos los procedimientos almacenados necesitan ser reconstruidos, escríbalo de nuevo.
 

Supongo que te gusta

Origin blog.csdn.net/Lee_92/article/details/128380154
Recomendado
Clasificación