Ejemplo de creación triggers MySQL con phpMyAdmin

Ejemplo de creación triggers MySQL con phpMyAdmin
logo mysql

Antes de ponernos manos a la obra, leamos la definición de Wikipedia de trigger:

Los Triggers o Disparadores son objetos que se asocian con tablas y se almacenan en la base de datos. Su nombre se deriva por el comportamiento que presentan en su funcionamiento, ya que se ejecutan cuando sucede algún evento sobre las tablas a las que se encuentra asociado. Los eventos que hacen que se ejecute un trigger son las operaciones de inserción (INSERT), borrado (DELETE) o actualización (UPDATE), ya que modifican los datos de una tabla.

Wikipedia

En esta entrada mostramos dos maneras de crear un trigger en una tabla de una base de datos MySQL.

1- Usando el formulario que phpMyAdmin nos facilita. Ponerle un nombre, elegir la tabla, decidir si se hará antes o después del evento, seleccionar uno de los tres eventos (AFTER, DELETE, UPDATE). He dejado el campo del definidor vacío, y se ha autorellenado con el usuario de la base de datos (gracias phpMyAdmin, no lo recordaba de memoria).

2- Escribiendo el código directamente en el phpMyAdmin. Es decir, escribiendo algo similar a lo siguiente:

CREATE TRIGGER nombre_trigger
{BEFORE | AFTER} {INSERT | UPDATE | DELETE}
ON nombre_tabla
FOR EACH ROW
BEGIN
  -- Cuerpo del trigger
END;
  • BEFORE o AFTER: Indica si el trigger debe ejecutarse antes o después del evento especificado.
  • INSERT, UPDATE, o DELETE: Especifica el tipo de evento que activará el trigger.
  • nombre_tabla: Indica la tabla asociada al trigger.
  • FOR EACH ROW: Especifica que el trigger se ejecutará una vez por cada fila afectada por el evento.

Tipos de Triggers:

  1. BEFORE Triggers:
    • Se ejecutan antes de que se realice la acción asociada al trigger (por ejemplo, antes de la inserción, actualización o eliminación).
  2. AFTER Triggers:
    • Se ejecutan después de que se haya realizado la acción asociada al trigger.

Acceso a las Columnas de la Fila:

Dentro del cuerpo del trigger, puedes acceder a las columnas de la fila afectada usando la sintaxis NEW y OLD:

  • NEW.columna: Accede al valor de la columna después del evento (solo en triggers AFTER).
  • OLD.columna: Accede al valor de la columna antes del evento (solo en triggers BEFORE).

Ejemplo de Trigger

Este trigger ajusta automáticamente el valor de columna1 a ‘Valor predeterminado’ si se intenta insertar un registro con un valor nulo en esa columna.

DELIMITER //
CREATE TRIGGER before_insert_example
BEFORE INSERT
ON ejemplo_tabla
FOR EACH ROW
BEGIN
  IF NEW.columna1 IS NULL THEN
    SET NEW.columna1 = 'Valor predeterminado';
  END IF;
END;
//
DELIMITER ;

Eliminación de Triggers

Para eliminar un trigger, se utiliza la siguiente sintaxis:

DROP TRIGGER [IF EXISTS] nombre_trigger;

Consideraciones Importantes

  1. Cascada de Triggers:
    • Los triggers pueden activar otros triggers, lo que lleva a una cascada de acciones.
  2. Evitar Ciclos Infinitos:
    • Es importante evitar la creación de triggers que puedan entrar en un ciclo infinito.
  3. Desempeño:
    • El uso excesivo de triggers puede afectar el rendimiento, así que se deben utilizar con cuidado.
  4. Permisos:
    • Se necesitan los permisos adecuados para crear y ejecutar triggers.

Deja una respuesta

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

*