Triggers en PostgreSQL
Los triggers son objetos que se ejecutan automáticamente ante eventos como INSERT, UPDATE, DELETE o TRUNCATE.
Definición
Un TRIGGER en PostgreSQL es un objeto que se ejecuta automáticamente en respuesta a eventos de modificación de datos en una tabla o vista.
Conceptos clave
- Evento y momento: BEFORE INSERT, AFTER UPDATE, etc.
- Función de trigger: Lógica en PL/pgSQL.
- Variables: NEW, OLD.
Sintaxis paso a paso
Paso 1: Función de trigger
CREATE OR REPLACE FUNCTION auditar_empleado_cambios()
RETURNS TRIGGER AS $$
BEGIN
INSERT INTO registro_auditoria (usuario_id, operacion, timestamp)
VALUES (CURRENT_USER, TG_OP, NOW());
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
Paso 2: Crear el trigger
CREATE TRIGGER trigger_auditoria_empleado
AFTER INSERT OR UPDATE OR DELETE ON empleados
FOR EACH ROW
EXECUTE FUNCTION auditar_empleado_cambios();
Ejemplo práctico
CREATE OR REPLACE FUNCTION capitalizar_nombre()
RETURNS TRIGGER AS $$
BEGIN
NEW.nombre = UPPER(NEW.nombre);
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER trigger_capitalizar_nombre
BEFORE INSERT ON productos
FOR EACH ROW
EXECUTE FUNCTION capitalizar_nombre();