sql >> Base de Datos >  >> RDS >> Database

¿Qué son los disparadores en SQL y cómo implementarlos?

Un disparador en SQL es un código de procedimiento que se ejecuta automáticamente en respuesta a ciertos eventos en una tabla específica. Es importante comprender cómo estos pequeños códigos marcan una gran diferencia en el rendimiento de la base de datos. En este artículo, aprenderá cómo implementar disparadores junto con ejemplos.

Los siguientes temas se tratarán en este artículo:

  • ¿Qué es un disparador?
  • Sintaxis y ejemplo
  • Operación en Triggers
  • Ventajas y desventajas

¿Qué es un activador?

Los disparadores son los códigos SQL que se ejecutan automáticamente en respuesta a ciertos eventos en una tabla en particular. Estos se utilizan para mantener la integridad de los datos. Un disparador en SQL funciona de manera similar a un disparador del mundo real. Por ejemplo, cuando se aprieta el gatillo del arma, se dispara una bala. Todos sabemos esto, pero ¿cómo se relaciona esto con Triggers en SQL? Para entender esto, consideremos una situación hipotética.

John es el responsable de marketing de una empresa. Cuando se ingresan los datos de un nuevo cliente en la base de datos de la empresa, debe enviar el mensaje de bienvenida a cada nuevo cliente. Si son uno o dos clientes, John puede hacerlo manualmente, pero ¿y si el conteo es más de mil? Bueno, en tal escenario, los disparadores son útiles.

Por lo tanto, ahora John puede crear fácilmente un activador que enviará automáticamente un correo electrónico de bienvenida a los nuevos clientes una vez que sus datos se ingresen en la base de datos. Así que espero que sea claro con la introducción de Triggers en SQL.

Recuerde siempre que no puede haber dos disparadores con tiempo de acción y evento similares para una mesa. Por ejemplo, no podemos tener dos disparadores ANTES DE ACTUALIZAR para una tabla. Pero podemos tener un ANTES DE LA ACTUALIZACIÓN y ANTES DE INSERTAR disparador, o un ANTES DE LA ACTUALIZACIÓN y un DESPUÉS DE LA ACTUALIZACIÓN disparador.

Antes de profundizar en los fundamentos de los disparadores, le sugiero que comprenda los conceptos básicos de SQL y la normalización para que tenga un mejor control de los disparadores en SQL.

Sintaxis y ejemplo

Veamos ahora la sintaxis de un disparador.

Create Trigger Trigger_Name
(Before | After)  [ Insert | Update | Delete]
on [Table_Name]
[ for each row | for each column ]
[ trigger_body ]

Ahora permítanme desglosar esta sintaxis y explicar todas y cada una de las partes en detalle.

  • Crear activador
    Estas dos palabras clave se utilizan para especificar que se va a declarar un bloque desencadenante.
  • Nombre_activador
    Especifica el nombre del activador. El nombre del disparador debe ser único y no debe repetirse.
  • ( Antes | Después de )
    Esto especifica cuándo se ejecutará el disparador. Nos dice el momento en que se inicia el disparador, es decir, antes o después del evento en curso.
  • Antes de los desencadenantes se utilizan para actualizar o validar valores de registro antes de que se guarden en la base de datos.
  • Disparadores posteriores se utilizan para acceder a los valores de campo establecidos por el sistema y para efectuar cambios en otros registros. Los registros que activan el disparador posterior son de solo lectura. No podemos usar After trigger si queremos actualizar un registro porque generará un error de solo lectura.
  • [ Insertar | Actualizar | Eliminar ]
    Estas son las operaciones DML y podemos usar cualquiera de ellas en un activador dado.
  • en [ Nombre_tabla ]
    Necesitamos mencionar el nombre de la tabla en la que se está aplicando el disparador. No olvide usar en palabra clave y también asegúrese de que la tabla seleccionada esté presente en la base de datos.
  • [ para cada fila | para cada columna]
    1. El activador de nivel de fila se ejecuta antes o después de cualquier valor de columna de una fila cambios
    2. El disparador de nivel de columna se ejecuta antes o después de la columna especificada cambios
  • [ gatillo_cuerpo]
    Consiste en consultas que deben ejecutarse cuando se llama al disparador.

Así que todo se trataba de un disparador simple. Pero también podemos crear un activador anidado que pueda realizar varios procesos. También es muy importante manejarlo y terminarlo en el momento adecuado. Si no terminamos el disparador correctamente, puede conducir a un bucle infinito.

Quizás se pregunte en qué escenario podemos usar el disparador anidado. En lugar de darle una respuesta personalizada, permítame compartir un escenario con usted, que lo ayudará a comprender mejor el disparador anidado. Continuando con el escenario anterior, John envió un correo electrónico por cada nuevo cliente que se agregó a la base de datos de la empresa. Ahora, ¿qué sucede si desea realizar un seguimiento de la cantidad de clientes a quienes se envió el correo electrónico? Ahora John necesita crear un activador anidado para realizar un seguimiento del conteo junto con el envío de un correo electrónico.

Así que eso fue todo acerca de la sintaxis de los disparadores, intentemos ahora implementar un ejemplo de disparadores en SQL.

Ejemplo para Activador:

En el disparador a continuación, estamos tratando de calcular el porcentaje del estudiante tan pronto como sus detalles se actualicen en la base de datos.

CREATE TRIGGER sample_trigger
before INSERT
ON student
FOR EACH ROW
SET new.total = new.marks/6;

Aquí el “NUEVO” palabra clave se refiere a la fila que se ve afectada.

Operaciones en Triggers

Podemos realizar muchas operaciones usando disparadores. Algunos pueden ser simples y otros pueden ser un poco complejos, pero una vez que revisamos la consulta, es fácil de entender.

  • SOLTAR UN ACTIVADOR
DROP TRIGGER trigger name;
  • Mostrar un disparador

El siguiente código mostrará todos los disparadores que están presentes.

SHOW TRIGGERS;

El siguiente código mostrará todos los disparadores que están presentes en una base de datos en particular.

SHOW TRIGGERS
IN database_name;

Ejemplo:

SHOW TRIGGERS IN edureka;

En el ejemplo anterior, se mostrarán todos los disparadores que están presentes en la base de datos llamada Edureka.

También observamos algunas de las principales variantes de los disparadores que son Antes de la inserción y Después de la inserción. Ya hemos visto un disparador en el ejemplo. Pero con la ayuda de la tabla, veamos cómo funciona esto exactamente.

Como ya hemos entendido cómo crear un disparador, ahora entendamos las dos variantes del disparador, que son Antes de la inserción y Después de la inserción. para implementarlos, creemos una tabla de estudiantes con varias columnas como se muestra a continuación:

CREATE TABLE Student(
studentID INT NOT NULL AUTO_INCREMENT,
FName VARCHAR(20),
LName VARCHAR(20),
Address VARCHAR(30),
City VARCHAR(15),
Marks INT,
PRIMARY KEY(studentID)
);

Ahora si ejecutamos esta consulta obtenemos la siguiente tabla.

Intentemos usar la primera variante, es decir, Antes de Insertar

CREATE TRIGGER calculate
before INSERT 
ON student
FOR EACH ROW
SET new.marks = new.marks+100;

Aquí, cuando insertamos datos en la tabla de estudiantes, automáticamente se invocará el disparador. El activador agregará 100 a la columna de calificaciones en la columna de estudiantes.

Ahora usemos la segunda variante, es decir, Después Insertar

Para usar esta variante, necesitamos una tabla más, es decir, Porcentaje donde el activador almacenará los resultados. Utilice el siguiente código para crear la tabla de porcentajes.

create table Final_mark(
per int );

Ahora usemos el activador de inserción posterior

CREATE TRIGGER total_mark
after insert 
ON student
FOR EACH ROW
insert into Final_mark values(new.marks);

Aquí, cuando insertamos datos en la tabla, total_mark trigger almacenará el resultado en la tabla Final_mark.

Eso fue todo sobre la operación de los disparadores, avancemos ahora y veamos sus ventajas y desventajas.

Ventajas y desventajas de los disparadores

Ventajas

  • Forzar seguridad aprobaciones en la tabla que están presentes en la base de datos
  • Los activadores proporcionan otra forma de verificar la integridad de los datos
  • Contrarrestar no válido intercambios
  • Desencadenadores controlar errores de la capa de la base de datos
  • Normalmente, los disparadores pueden ser útiles para inspeccionar los datos cambios en las tablas
  • Los disparadores brindan una forma alternativa de ejecutar tareas programadas . Al usar disparadores, no tenemos que esperar a que se ejecuten los eventos programados porque los disparadores se invocan automáticamente antes o después de que se realice un cambio en los datos de una tabla

Desventaja s

  • Los disparadores solo pueden proporcionar validaciones extendidas , es decir, no todo tipo de validaciones. Para validaciones simples, puede usar las restricciones NOT NULL, UNIQUE, CHECK y FOREIGN KEY
  • Los desencadenantes pueden aumentar los gastos generales de la base de datos
  • Los desencadenantes pueden ser difíciles de solucionar porque se ejecutan automáticamente en la base de datos, lo que puede no ser invisible para las aplicaciones cliente

Esto nos lleva al final de este artículo Activadores en SQL. Espero que hayas entendido los conceptos de Triggers.

Si desea obtener más información sobre MySQL y conocer esta base de datos relacional de código abierto, consulte nuestra Capacitación de certificación de DBA de MySQL que incluye capacitación en vivo dirigida por un instructor y -Experiencia proyecto de vida. Esta capacitación lo ayudará a comprender MySQL en profundidad y lo ayudará a dominar el tema.

¿Tiene alguna pregunta para nosotros? Menciónelo en la sección de comentarios de este Triggers en SQL y nos pondremos en contacto con usted.