Articles

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

Un trigger en SQL es un código de procedimiento que se ejecuta automáticamente en respuesta a ciertos eventos en una tabla especificada. Es importante entender cómo estos pequeños códigos hacen una diferencia tan grande en el rendimiento de la base de datos. En este artículo, aprenderá a implementar triggers junto con ejemplos.

En este artículo se tratarán los siguientes temas:

  • ¿Qué es un Trigger?
  • Sintaxis y Ejemplo
  • Operación en Triggers
  • Ventaja y Desventaja

¿Qué es un Trigger?

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

John es el responsable de marketing de una empresa. Cuando se introducen los datos de un nuevo cliente en la base de datos de la empresa tiene que enviar el mensaje de bienvenida a cada nuevo cliente. Si se trata de uno o dos clientes, John puede hacerlo manualmente, pero ¿qué pasa si la cuenta es de más de mil? Pues en ese escenario los triggers son muy útiles.

Así, ahora John puede crear fácilmente un disparador que enviará automáticamente un correo electrónico de bienvenida a los nuevos clientes una vez que sus datos sean introducidos en la base de datos. Así que espero que tengas clara la introducción de los Triggers en SQL.

Recuerda siempre que no puede haber dos triggers con tiempo de acción y evento similares para una tabla. Por ejemplo, no podemos tener dos triggers BEFORE UPDATE para una tabla. Pero sí podemos tener un trigger BEFORE UPDATE y un BEFORE INSERT, o un trigger BEFORE UPDATE y un trigger AFTER UPDATE.

Antes de profundizar en los fundamentos de los triggers te sugiero que entiendas los conceptos de SQL Basics y Normalization para que tengas un mejor control de los Triggers en SQL.

Sintaxis y Ejemplo

Veamos ahora la sintaxis de un trigger.

Create Trigger Trigger_Name(Before | After) on 

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

  • Crear Trigger
    Estas dos palabras clave se utilizan para especificar que se va a declarar un bloque trigger.
  • Nombre_del_disparador
    Especifica el nombre del disparador. El nombre del trigger tiene que ser único y no debe repetirse.
  • ( Before | After )
    Especifica cuándo se ejecutará el trigger. Nos indica el momento en el que se inicia el trigger, es decir, antes del evento en curso o después.
    • Antes Los triggers se utilizan para actualizar o validar los valores de los registros antes de que se guarden en la base de datos.
    • Los Triggers after se utilizan para acceder a los valores de los campos establecidos por el sistema y para efectuar cambios en otros registros. Los registros que activan el after trigger son de sólo lectura. No podemos utilizar el trigger After si queremos actualizar un registro porque dará lugar a un error de sólo lectura.
    • Estas son las operaciones DML y podemos utilizar cualquiera de ellas en un trigger determinado.
    • on
      Necesitamos mencionar el nombre de la tabla sobre la que se está aplicando el trigger. No olvides utilizar la palabra clave on y también asegúrate de que la tabla seleccionada está presente en la base de datos.

    1. El trigger de nivel de fila se ejecuta antes o después de que cambie el valor de cualquier columna de una fila
    2. El trigger de nivel de columna se ejecuta antes o después de que cambie la columna especificada

  • Se compone de consultas que deben ejecutarse cuando se llama al trigger.

Así que esto fue todo sobre un trigger simple. Pero también podemos crear un trigger anidado que pueda hacer multiproceso. Además manejarlo y terminarlo en el momento adecuado es muy importante. Si no terminamos el trigger correctamente puede llevarnos a un bucle infinito.

Puede que te preguntes en qué escenario podemos utilizar el trigger anidado. En lugar de daros una respuesta a medida dejadme que comparta con vosotros un escenario que os ayudará a entender mejor el trigger anidado. Continuando con el escenario anterior, Juan envió un correo electrónico por cada nuevo cliente que se añadió a la base de datos de la empresa. Ahora, ¿qué pasa si desea hacer un seguimiento del número de clientes a los que se envió el correo electrónico? Ahora John necesita crear un disparador anidado para mantener el seguimiento del recuento junto con el envío de un correo electrónico.

Así que eso fue todo sobre la sintaxis de los triggers, ahora vamos a tratar de implementar un ejemplo de triggers en SQL.

Ejemplo de Trigger:

En el siguiente trigger, estamos tratando de calcular el porcentaje del estudiante tan pronto como sus detalles se actualizan a la base de datos.

CREATE TRIGGER sample_triggerbefore INSERTON studentFOR EACH ROWSET new.total = new.marks/6;

Aquí la palabra clave «NEW» se refiere a la fila que se está viendo afectada.

Operaciones en Triggers

Podemos realizar muchas operaciones utilizando triggers. Algunas pueden ser sencillas y otras pueden ser un poco complejas, pero una vez que si vamos a través de la consulta es fácil de entender.

  • Soltar un Trigger
DROP TRIGGER trigger name;
  • Mostrar un Trigger

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

SHOW TRIGGERS;

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

SHOW TRIGGERSIN database_name;

Ejemplo:

SHOW TRIGGERS IN edureka;

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

También vemos algunas variantes principales de los triggers que son Before insert y After insert. Ya hemos visto un trigger en el ejemplo. Pero con la ayuda de la tabla vamos a ver cómo funciona exactamente.

Como ya hemos entendido cómo crear un trigger, ahora vamos a entender las dos variantes del trigger que son Antes de insertar y Después de insertar.Para implementarlos, vamos a crear una tabla de estudiantes con varias columnas como se muestra a continuación:

Ahora si ejecutamos esta consulta obtenemos la siguiente tabla.

Intentemos utilizar la primera variante es decir, Before Insert

CREATE TRIGGER calculatebefore INSERT ON studentFOR EACH ROWSET new.marks = new.marks+100;

Aquí cuando insertemos los datos en la tabla de alumnos automáticamente se invocará el trigger. El trigger añadirá 100 a la columna de notas en la columna de estudiantes.

Ahora vamos a utilizar la segunda variante es decir, Después de insertar

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

create table Final_mark(per int );

Ahora vamos a utilizar el trigger después de la inserción

CREATE TRIGGER total_markafter insert ON studentFOR EACH ROWinsert into Final_mark values(new.marks);

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

Eso fue todo sobre el funcionamiento de los triggers, ahora avancemos y veamos sus ventajas y desventajas.

Ventajas y desventajas de los triggers

Ventajas

  • Forzar las aprobaciones de seguridad en la tabla que están presentes en la base de datos
  • Los triggers proporcionan otra forma de comprobar la integridad de los datos
  • .
  • Contrarrestar los intercambios no válidos
  • Los triggers manejan los errores de la capa de base de datos
  • Normalmente los triggers pueden ser útiles para inspeccionar los cambios de datos en las tablas
  • Los triggers dan una forma alternativa de ejecutar tareas programadas. Usando triggers, no tenemos que esperar a que se ejecuten los eventos programados porque los triggers se invocan automáticamente antes o después de que se realice un cambio en los datos de una tabla
  • Desventajas

    • Los triggers sólo pueden proporcionar validaciones extendidas, es decir, no todas las validaciones de tipo. Para validaciones sencillas, puedes utilizar las restricciones NOT NULL, UNIQUE, CHECK y FOREIGN KEY
    • Los Triggers pueden aumentar la sobrecarga de la base de datos
    • Los Triggers 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
    • Con esto llegamos al final de este artículo de Triggers en SQL. Espero que hayas entendido los conceptos de Triggers.

      Si deseas aprender más sobre MySQL y conocer esta base de datos relacional de código abierto, entonces echa un vistazo a nuestra Formación de Certificación MySQL DBA que viene con formación en vivo dirigida por un instructor y experiencia en proyectos de la vida real. Esta formación le ayudará a entender MySQL en profundidad y le ayudará a lograr el dominio sobre el tema.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *