SQL | disparadores

Trigger es una declaración que un sistema ejecuta automáticamente cuando hay alguna modificación en la base de datos. En un disparador, primero especificamos cuándo se ejecutará el disparador y luego la acción que se realizará cuando se ejecute el disparador. Los activadores se utilizan para especificar determinadas restricciones de integridad y restricciones de referencia que no se pueden especificar mediante el mecanismo de restricción de SQL. 

Ejemplo: 
supongamos que estamos agregando una tupla a la tabla ‘Donantes’ que es una persona que ha donado sangre. Entonces, podemos diseñar un activador que agregará automáticamente el valor de la sangre donada a la tabla ‘Blood_record’. 

Tipos de disparadores: 
podemos definir 6 tipos de disparadores para cada tabla: 

  1. DESPUÉS DE INSERTAR se activa después de insertar datos en la tabla. 
     
  2. DESPUÉS DE ACTUALIZAR: se activa después de modificar los datos de la tabla. 
     
  3. DESPUÉS DE ELIMINAR: se activa después de que los datos se eliminen/eliminen de la tabla. 
     
  4. ANTES DE INSERTAR: activado antes de que se inserten datos en la tabla. 
     
  5. ANTES DE LA ACTUALIZACIÓN: se activa antes de que se modifiquen los datos de la tabla. 
     
  6. ANTES DE ELIMINAR: activado antes de que se eliminen/eliminen los datos de la tabla. 
     

Ejemplos que muestran la implementación de Triggers: 

1. Escriba un disparador para asegurarse de que ningún empleado menor de 25 años pueda ser insertado en la base de datos. 

delimiter $$
CREATE TRIGGER  Check_age  BEFORE INSERT ON employee 
FOR EACH ROW
BEGIN
IF NEW.age < 25 THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'ERROR: 
         AGE MUST BE ATLEAST 25 YEARS!';
END IF;
END; $$
delimiter; 

Explicación: Cada vez que queramos insertar cualquier tupla en la tabla ‘empleado’, antes de insertar esta tupla en la tabla, se ejecutará el disparador llamado ‘Check_age’. Este activador verificará el atributo de edad. Si es mayor que 25, esta tupla se insertará en la tupla; de lo contrario, se imprimirá un mensaje de error que indica «ERROR: ¡LA EDAD DEBE TENER AL MENOS 25 AÑOS!» 

2. Cree un activador que funcione antes de la eliminación en la tabla de empleados y cree una copia duplicada del registro en otra tabla employee_backup. 

Antes de escribir el disparador, necesitamos crear la tabla employee_backup. 

create table employee_backup (employee_no int, 
      employee_name varchar(40), job varchar(40), 
      hiredate date, salary int, 
      primary key(employee_no)); 
delimiter $$
CREATE TRIGGER Backup BEFORE DELETE ON employee 
FOR EACH ROW
BEGIN
INSERT INTO employee_backup
VALUES (OLD.employee_no, OLD.name, 
        OLD.job, OLD.hiredate, OLD.salary);
END; $$
delimiter; 

Explicación: Queremos crear una tabla de respaldo que contenga el valor de aquellos empleados que ya no son empleados de la institución. Entonces, creamos un disparador llamado Copia de seguridad que se ejecutará antes de la eliminación de cualquier Tupla de la tabla empleado. Antes de la eliminación, los valores de todos los atributos de la tabla employee se almacenarán en la tabla employee_backup. 

3. Escriba un disparador para contar el número de nuevas tuplas insertadas usando cada declaración de inserción. 

Declare count int
Set count=0;
delimiter $$
CREATE TRIGGER Count_tupples 
             AFTER INSERT ON employee 
FOR EACH ROW
BEGIN
SET count = count + 1;
END; $$
delimiter;

Explicación: Queremos hacer un seguimiento del número de tuplas nuevas en la tabla de empleados. Para eso, primero creamos una variable ‘recuento’ y la inicializamos a 0. Después de eso, creamos un disparador llamado Count_tuples que incrementará el valor de conteo después de la inserción de cualquier Tupla nueva en la tabla employee.

Publicación traducida automáticamente

Artículo escrito por India_1998 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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