Los triggers en SQL, o disparadores, son una característica de la mayoría de sistemas de base de datos relacionales que permiten ejecutar cierto código de forma automática, cuando se producen ciertos eventos, como puede ser una inserción, actualización o eliminación de una tabla.
Se pueden crear para una tabla específica o para una base de datos. Esto significa que se pueden configurar para que se ejecuten en respuesta a eventos que ocurren en una tabla determinada, o para eventos que ocurren en cualquier tabla de la base de datos.
Los disparadores se suelen utilizar para realizar tareas de mantenimiento automático en la base de datos, como actualizar campos de control o auditoría, o para verificar la integridad de los datos antes de permitir que se realicen cambios.
La sintaxis básica para crear triggers en SQL es la siguiente,
CREATE TRIGGER nombre_del_trigger evento_que_dispara_el_trigger
ON nombre_de_la_tabla
[FOR EACH ROW]
BEGIN
-- código a ejecutar aquí
END;
Donde,
- Nombre_del_trigger es el nombre que se le da al trigger.
- Evento_que_dispara_el_trigger es el evento que dispara la ejecución del trigger. Puede ser «AFTER INSERT», «AFTER UPDATE», «AFTER DELETE», «BEFORE INSERT», «BEFORE UPDATE» o «BEFORE DELETE».
- Nombre_de_la_tabla es el nombre de la tabla para la que se crea el trigger.
- FOR EACH ROW es opcional e indica que el trigger se debe ejecutar para cada fila afectada por el evento. Si no se especifica, el trigger se ejecutará una única vez para el conjunto de filas afectadas.
- El código que se ejecutará cuando se dispare el trigger va dentro del bloque «BEGIN» y «END».
Por ejemplo, podríamos utilizarlo para actualizar un campo de control que lleve la cuenta del número de clientes que tenemos en la base de datos:
CREATE TRIGGER tr_customers_insert
AFTER INSERT
ON customers
FOR EACH ROW
BEGIN
UPDATE control SET customer_count = customer_count + 1;
END;
En este caso, cada vez que se inserte una fila en la tabla «customers», se ejecutará el código del trigger, que a su vez actualizará el campo «customer_count» en la tabla «control» incrementándolo en 1.
Es importante tener en cuenta que los triggers deben utilizarse con cuidado, ya que pueden afectar el rendimiento de la base de datos si se ejecutan con demasiada frecuencia o si el código que contienen es muy complejo.