Categorías: MySQLPHP y MySQL

CREATE TRIGGER MySQL: Detectar eventos en una base de datos

Vamos a repasar la sentencia de MySQL CREATE TRIGGER, su funcionalidad es la de detectar ciertos eventos asociados a una tabla de la base de datos y ejecutar una serie de acciones tras dicha detección. Estas acciones también son conocidas como disparadores.

Estos eventos son:

  • INSERT: Inserción de datos.
  • UPDATE: Actualización de datos.
  • DELETE: Eliminación de datos.

Con DROP TRIGGER eliminamos el disparador.

Sintaxis de la sentencia de MySQL CREATE TRIGGER

Veamos la sintaxis de esta sentencia de MySQL extraída de su web oficial:

CREATE
    [DEFINER = { user | CURRENT_USER }]
    TRIGGER trigger_name
    trigger_time trigger_event
    ON tbl_name FOR EACH ROW
    [trigger_order]
    trigger_body

Os explico la sintaxis:

  • DEFINER: Especifica el usuario de BBDD con privilegios para desencadenar un TRIGGER. Por defecto es el usuario que crear el TRIGGER.
  • trigger_name: Nombre del TRIGGER/disparador.
  • trigger_time: Especifica cuando se ha de ejecutar el TRIGGER, antes o después del evento detectado.
  • trigger_event: Evento que activa el TRIGGER –> INSERT, UPDATE y DELETE.
  • tbl_name: Nombre de la tabla en la que detectaremos el trigger_event.
  • trigger_order: Una tabla puede tener asociados varios TRIGGER, por defecto la ejecución de cada uno es el orden en el que fuero creados. Para alterar ese orden podemos definirlos con FOLLOWS (depués de nombre trigger) y con PRECEDE (antes de nombre_trigger).
  • trigger_body: Código del TRIGGER.

Ejemplo de la sentancia de MySQL CREATE TRIGGER

Vayamos con una serie de ejemplos de CREATE TRIGGER:

UPDATE empleados SET antiguedad = antiguedad + 1;

CREATE TRIGGER actualizar_sueldo_empleados AFTER UPDATE ON empleados
FOR EACH ROW SET @sueldo = @sueldo + 50;

Explico el ejemplo superior, imaginemos que es día 1 de enero y tenemos que actualizar la antigüedad de los empleados en la empresa y que a cada empleado le suben 50 dólares el sueldo mensual.

Primero ejecutamos la sentencia UPDATE para posteriormente se active el TRIGGER creado. En esta ocasión se ejecutará después de la actualización de la antigüedad y por cada fila actualizada se actualizará el sueldo en 50 dólares más.

compartir
Publicado por
Aner Barrena