El activador MySQL es un objeto de base de datos que está asociado con una tabla. Se activará cuando se ejecute una acción definida para la tabla. El desencadenador se puede ejecutar cuando ejecuta una de las siguientes instrucciones MySQL en la tabla: INSERT, UPDATE y DELETE. Se puede invocar antes o después del evento.
O
Un disparador SQL es un conjunto de sentencias SQL almacenadas en el catálogo de la base de datos. Un disparador SQL se ejecuta o dispara cada vez que ocurre un evento asociado con una tabla, por ejemplo, insertar, actualizar o eliminar.
Un disparador SQL es un tipo especial de procedimiento almacenado. Es especial porque no se llama directamente como un procedimiento almacenado. La principal diferencia entre un disparador y un procedimiento almacenado es que se llama automáticamente a un disparador cuando se realiza un evento de modificación de datos en una tabla, mientras que un procedimiento almacenado debe llamarse explícitamente.
Ventajas de usar disparadores SQL
- Los disparadores SQL proporcionan una forma alternativa de verificar la integridad de los datos.
- Los activadores de SQL pueden detectar errores en la lógica empresarial en la capa de la base de datos.
- Los activadores de SQL proporcionan una forma alternativa de ejecutar tareas programadas. Al usar disparadores SQL, no tiene que esperar para ejecutar las tareas programadas porque los disparadores se invocan automáticamente antes o después de realizar un cambio en los datos de las tablas.
- Los activadores de SQL son muy útiles para auditar los cambios de datos en las tablas.
CREAR DISPARADOR Sintaxis
CREAR
[DEFINER = {usuario | USUARIO ACTUAL }]
TRIGGER trigger_name
trigger_time trigger_event
ON tbl_name PARA CADA FILA
[trigger_order]
cuerpo_activador
trigger_time: {ANTES | DESPUÉS }
trigger_event: {INSERTAR | ACTUALIZAR | BORRAR }
trigger_order: {SIGUE | PRECEDES} other_trigger_name
Aquí hay un ejemplo de un activador MySQL:
- Primero crearemos la tabla para la cual se establecerá el disparador:
mysql> CREATE TABLE people (edad INT, nombre varchar (150));
2. A continuación definiremos el disparador. Se ejecutará antes de cada instrucción INSERT para la tabla de personas:
mysql> delimitador //
mysql> CREAR GATILLO agecheck ANTES DE INSERTAR EN LAS PERSONAS PARA CADA FILA SI ES NUEVO. edad <0 LUEGO CONFIGURAR NUEVO. edad = 0; TERMINARA SI;//
Consulta OK, 0 filas afectadas (0.00 seg)
mysql> delimitador;
Insertaremos dos registros para verificar la funcionalidad del disparador.
mysql> INSERTAR EN VALORES de personas (-20, ‘Sid’), (30, ‘Josh’);
Consulta OK, 2 filas afectadas (0.00 seg)
Registros: 2 Duplicados: 0 Advertencias: 0
3. Al final comprobaremos el resultado.
mysql> SELECCIONAR * DE personas;
+ ——- + ——- +
El | edad | nombre |
+ ——- + ——- +
El | 0 | Sid |
El | 30 Josh |
+ ——- + ——- +
2 filas en conjunto (0.00 seg)