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';

create-trigger-stmt