Referencia en documentación oficial: https://www.sqlite.org/lang_createtrigger.html
¿Qué son los triggers?
Los triggers (disparadores) son operaciones que se realizan automáticamente ante un evento específico de la base de datos. Pueden desencadenarse por una operación DELETE, INSERT o UPDATE de una tabla, o por la operación UPDATE sobre una o más columnas específicas.
Referencias a columnas dentro de un trigger
Las acciones del trigger y la cláusula WHEN pueden acceder a los elementos de la fila afectada mediante referencias del tipo "NEW.nombre-columna" y "OLD.nombre-columna". OLD y NEW son referencias relevantes en los siguientes casos:
- NEW en INSERT o UPDATE
- OLD en UPDATE o DELETE
AFTER Y BEFORE
Las palabras clave BEFORE y AFTER, que pueden anteceder al tipo de evento para el cual el trigger se define, determinan cuándo se ejecutará el trigger en relación a la inserción, modificación o eliminación de la fila.
Es necesario tener esto en cuenta, por ejemplo, en un trigger cuyas acciones involucren un campo autoincremental, que tomará su valor recién después de la ejecución de un INSERT.
Ejemplo de trigger UPDATE
Ejemplo tomado de la documentación de CREATE TRIGGER.
Asumiendo que los registros de cliente son almacenados en la tabla "customers", y las órdenes de los clientes en la tabla "orders", el siguiente trigger UPDATE se asegura que todas las ordenes asociadas sean redirigidas cuando un cliente cambia su dirección postal.
CREATE TRIGGER update_customer_address UPDATE OF address ON customers
BEGIN
UPDATE orders SET address = new.address WHERE customer_name = old.name;
END;
Entonces, cuando se ejecuta la sentencia
UPDATE customers SET address = '1 Main St.' WHERE name = 'Jack Jones';
se dispara la siguiente acción
UPDATE orders SET address = '1 Main St.' WHERE customer_name = 'Jack Jones';